从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