如何在 Ansible 中创建和使用自定义事实

[ad_1]

自定义事实 (本地事实)是在 ansible 托管主机上声明的变量。 自定义事实在 ini 或 json 文件中声明 /etc/ansible/facts.d 托管主机上的目录。 自定义事实的文件名必须具有 .fact 扩展名。

在本文中,我们将介绍如何创建和使用自定义事实来安装 samba 文件服务器并在 ansible 托管主机上启动其服务。 在这里,我们使用 host1 和 host2 作为清单中文件服务器组的一部分。

为了演示自定义事实,以下是我的实验室设置

  • control.example.com — 10.20.0.57
  • host1.example.com — 10.20.0.10 // Ansible 托管主机
  • host3.example.com — 10.20.0.30 // Ansible 托管主机

笔记 : devops 用户在 ansible 控制和托管主机上配置 sudo 权利。 Inventory 和 ansible.cfg 文件定义在 /家/开发/安装 目录。 我的库存内容如下所示:

[[email protected] install]$ cat inventory
[fileservers]
host1.example.com
host3.example.com

[dbservers]
host2.example.com
host1.example.com
[[email protected] install]$

声明和使用自定义本地事实的逻辑步骤是

  • 在 ansible 控制主机上创建一个扩展名为 .fact 的事实文件
  • 在剧本中创建一个剧本以创建一个文件夹’/etc/ansible/facts.d‘ 并将托管主机上的事实文件复制到此文件夹中。
  • 在剧本中创建 2nd play 将使用这些自定义事实 ansible_local...安装samba服务器并启动它的服务。

让我们深入了解自定义或本地事实的实际实现。

步骤 1) 在控制节点上创建自定义事实文件

让我们使用以下内容创建 customfacts.fact 文件

[[email protected] install]$ cat customfacts.fact
[localfacts]
pkgname = samba
srvc = smb
[[email protected] install]$

这里localfacts是 事实名称 和 pkgname & srvc 是 变量.

第 2 步)创建一个包含两个不同剧本的剧本

使用以下内容创建 customfacts-install.yaml playbook

[[email protected] install]$ vi customfacts-install.yaml
---
- name: Install custom facts
  hosts: fileservers
  vars:
    remote_dir: /etc/ansible/facts.d
    facts_file: customfacts.fact
  tasks:
  - name: Create Facts Dir on Managed Hosts
    file:
      path: "{{ remote_dir }}"
      state: directory
      recurse: yes
  - name: Copy Contents to Facts file
    copy:
      src: "{{ facts_file }}"
      dest: "{{ remote_dir }}"

- name: Install Samba Server with Custom Facts
  hosts: fileservers
  tasks:
  - name: Install SMB
    package:
      name: "{{ ansible_local.customfacts.localfacts.pkgname }}"
      state: present
  - name: Start SMB Service
    service:
      name: "{{ ansible_local.customfacts.localfacts.srvc }}"
      state: started
      enabled: yes

保存并退出文件。

步骤 3) 在文件服务器上运行剧本

我们将在文件服务器上执行剧本,在运行它之前,让我们验证从控制节点到这些节点的连接。

[[email protected] install]$ ansible fileservers -m ping

以上确认 ping pong 工作正常,所以让我们使用 under 命令运行 ansible playbook,

[[email protected] install]$ ansible-playbook customfacts-install.yaml

以上输出显示 playbook 已成功执行。 让我们验证自定义事实和 samba 服务的安装。

步骤 5) 验证自定义本地事实和 Samba 服务

在 ansible ad-hoc 命令下运行以验证自定义事实安装,

[[email protected] install]$ ansible fileservers -m setup -a "filter=ansible_local"

通过执行以下操作来验证 samba 服务器的服务状态:

[[email protected] install]$ ansible fileservers -m command -a "systemctl status smb"

完美,以上输出确认 Samba 已成功安装并且其服务已启动并运行。

这就是本文的全部内容,希望您对自定义事实安装及其用法有基本的了解。

另请阅读如何在 Ansible Playbook 中使用处理程序

[ad_2]

Related Posts