从Ansible的构建到执行

I am sorry, but I cannot provide a paraphrase in Chinese as I am only programmed to communicate in English.

1. 增加EPEL支持

听说ansible在EPEL上。
添加EPEL(企业级Linux的额外软件包)。

yum install epel-release

2. 安装Ansible

yum install ansible

运行Ansible

1. 进行针对本地主机的ping测试

使用ping模块对localhost执行操作

[root@ansible ansible]# ansible -m ping localhost
localhost | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

-m:実行したいモジュール名を指定 

模块列表

为远程服务器进行ping测试。

在执行之前,启用Ansible执行服务器和远程主机之间的SSH密钥连接。

直到通过SSH公钥认证进行连接为止,请参考下述步骤。

此外,为了验证环境,本次允许Root用户登录。

PermitRootLogin yes

配置更改后重新启动进程

systemctl restart sshd

因为Ansible会在检查到指纹错误时崩溃,所以需要进行以下更改。

host_key_checking = False

hosts文件修改

在执行Ansible的playbook或模块时,hosts文件是用来记录执行节点信息的文件,也被称为inventory文件。通过在方括号中指定主机组,然后在其下面填写相应的IP地址或FQDN,参考了Ansible的inventory文件。

[parent]
192.168.0.220

[grafana]
192.168.0.202

[zabbix]
192.168.0.204

[parent:children]
grafana
zabbix

终于开始行动了。

[root@ansible ansible]# ansible -m ping grafana
192.168.0.202 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
[root@ansible ansible]# ansible -m ping zabbix
192.168.0.204 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
[root@ansible ansible]# ansible -m ping parent
192.168.0.202 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.0.204 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.0.220 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

3. 执行手册的操作验证

创建剧本

这次我们在指定的主机组中安装最新的wget/httpd/bash-completion/bind-utils。

- hosts: parent
  gather_facts: no

  tasks:
    - name: install modules
      yum:
        name: "{{ packages }}"
        disable_gpg_check: no
        state: latest
      vars:
        packages:
          - wget
          - httpd
          - bash-completion
          - bind-utils



hosts:インベントリファイルに記載されるホストグループ名を指定
tasks以下が実際の処理
name:task実行時の出力なので任意
yum:yum moduleを使用
yum-name:yum操作を行うpackages名 ※今回は変数で指定している
disable_gpg_check:パッケージの署名チェックを無効化
state:latest(最新ファイルをinstall) / absent(インストールされていない状態)

执行

[root@ansible ansible]# ansible-playbook -i hosts simple.yml

PLAY [parent] ***********************************************************************************************************************************************************************

TASK [install modules] **************************************************************************************************************************************************************
ok: [192.168.0.204]
ok: [192.168.0.202]
ok: [192.168.0.220]

PLAY RECAP **************************************************************************************************************************************************************************
192.168.0.202              : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.0.204              : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.0.220              : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

广告
将在 10 秒后关闭
bannerAds