Ansible模块——Ansible的安装!
Ansible 安装
Ansible 有三种安装方式,源码安装、发行版安装和 Python 安装。
使用发行版安装或 Python 安装两种方式时,Ansible 的安装包有两个,区别如下:
-
•
ansible-core
:一种极简语言和运行时包,包含一组内置模块和插件。 -
•
ansible
:一个更大的“包含电池”的软件包,它添加了社区精选的 Ansible 集合选择,用于自动化各种设备。
在用源码或者 Python 安装 Ansible 时,默认不会安装
sshpass
软件包,该软件包用来给 Ansible 提供密码验证被控端,因此如果在执行 Ansible 的命令时需要输入 ssh 的密码,则需要该软件包,该软件包通过dnf install -y sshpass
。[root@ansible ansible]# ansible servera -m ping servera | FAILED! => {"msg": "to use the 'ssh' connection type with passwords or pkcs11_provider, you must install the sshpass program" }
本次安装使用 Rocky 8 Linux 系统。
源码安装
[root@ansible ~]# dnf install python3.12 python3.12-pip sshpass
[root@ansible ~]# tar xf ansible-2.16.3.tar.gz
[root@ansible ~]# cd ansible-2.16.3/
[root@ansible ansible-2.16.3]# python3 -m pip install -r ./requirements.txt
[root@ansible ansible-2.16.3]# python3 setup.py install
源码安装只能安装
Ansible-core
。
发行版安装
[root@ansible ~]# dnf install -y epel-release# 安装最简洁的 Ansible
[root@ansible ~]# dnf install ansible-core# 安装包含常用模块的 Ansible
[root@ansible ~]# dnf install ansible
Python 安装
# 安装 Python3 和 pip
[root@ansible ~]# dnf install python3.12 python3.12-pip sshpass# 安装 Ansible-core
[root@ansible ~]# python3.12 -m pip install ansible-core==2.16.3# 安装 Ansible
[root@ansible ~]# python3.12 -m pip install ansible
设置 Ansible 参数自动补全
[root@ansible ~]# python3 -m pip install argcomplete
[root@ansible ~]# activate-global-python-argcomplete --user
重新登录命令行加载一下环境变量就可以看到自动补全了。
快速配置并使用 Ansible
有一个被控节点,地址为 192.168.221.131
,主机名为 servera
。
[root@ansible ~]# mkdir ansible
[root@ansible ~]# cd ansible
[root@ansible ansible]# sed -i 's/;inventory=.*/inventory\ =\ .\/inventory/' ansible.cfg
[root@ansible ansible]# cat <<-EOF > ansible.cfg
[defaults]
inventory = ./inventory
ask_pass = false
remote_user = root
log_path = /var/log/ansible.log
host_key_checking = False
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
EOF
[root@ansible ansible]# echo servera > inventory
[root@ansible ansible]# tail -n1 /etc/hosts
192.168.221.131 servera# 通过 ping 模块测试网络连通性
[root@ansible ansible]# ansible all -k -m ping
SSH password:
servera | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}