在RHEL 8/CentOS 8上安装和配置Ansible
我们要在CentOS 8/RHEL 8 Linux上安装Ansible吗? Ansible是领先的开源配置管理系统。它使管理员和操作团队可以轻松地从中央计算机控制数千台服务器,而无需在其上安装代理。
与其他配置管理系统(例如Puppet,Chef和Salt)相比,Ansible是最易于使用和管理的。它易于安装,学习和使用。远程服务器上唯一需要的依赖项是SSH服务和Python。
使用以下步骤在CentOS 8/RHEL 8上安装和配置Ansible。
在RHEL 8/CentOS 8上安装Python
使用以下指南在RHEL 8上安装并设置默认Python。
如何在RHEL 8上安装Python 3/Python 2.7
安装完成后,继续安装Pip,这是用于安装Ansible的Python软件包管理器。
如果我们使用Python3,请安装python3-pip
软件包。
sudo dnf -y install python3-pip sudo pip3 install --upgrade pip
对于Python2用户,我们必须安装python2-pip
。
sudo dnf -y install python2-pip sudo pip2 install --upgrade pip
在RHEL 8/CentOS 8上安装Ansible
我们可以通过两种方法在CentOS 8/RHEL 8上安装Ansible。
方法1:从EPEL在CentOS 8/RHEL 8上安装Ansible
将EPEL存储库添加到CentOS 8/RHEL 8系统。
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
然后启用EPEL游乐场存储库并从中在CentOS 8/RHEL 8上安装Ansible。
sudo dnf install --enablerepo epel-playground ansible
这将默认使用Python 3,因此安装了一些Python 3软件包。
Dependencies resolved. =================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================== Installing: ansible noarch 2.8.5-2.epel8.playground epel-playground 15 M Installing dependencies: python3-jmespath noarch 0.9.0-11.el8 AppStream 45 k python3-pyasn1 noarch 0.3.7-6.el8 AppStream 126 k python3-bcrypt x86_64 3.1.6-2.epel8.playground.1 epel-playground 44 k python3-pynacl x86_64 1.3.0-5.epel8.playground epel-playground 100 k sshpass x86_64 1.06-9.epel8.playground epel-playground 27 k libsodium x86_64 1.0.18-2.el8 epel 162 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.epel8.playground epel-playground 289 k Transaction Summary =================================================================================================================================================== Install 8 Packages Total download size: 15 M Installed size: 81 M Is this ok [y/N]: y
检查在CentOS 8/RHEL 8系统上安装的Ansible版本。
$ansible --version ansible 2.8.5 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/cloud-user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, May 1 2019, 16:43:04) [GCC 8.2.1 20160905 (Red Hat 8.2.1-3)]
方法2:使用pip在CentOS 8/RHEL 8上安装Ansible
一旦安装了Pip,就可以使用它在CentOS 8/RHEL 8计算机上安装Ansible。
$pip3 install ansible --user
对于Python2点,请使用:
$pip2 install ansible --user
我们可以使用以下命令查看已安装的Ansible:
$ansible --version ansible 2.7.5 config file = None configured module search path = ['/home/jmutai/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/jmutai/.local/lib/python3.6/site-packages/ansible executable location = /home/jmutai/.local/bin/ansible python version = 3.6.6 (default, Oct 16 2016, 01:53:53) [GCC 8.2.1 20160905 (Red Hat 8.2.1-3)]
在CentOS 8/RHEL 8 Linux上测试Ansible
要测试Ansible,我们应该在远程服务器上运行OpenSSH服务。
$sudo systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2016-12-29 20:17:11 EAT; 39min ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 820 (sshd) Tasks: 1 (limit: 11510) Memory: 4.6M CGroup: /system.slice/sshd.service └─820 /usr/sbin/sshd -D theitroad@localhost,theitroad@localhost,aes256-ctr,aes256-cbc,theitroad@localhost,aes128-> Dec 29 20:17:11 rhel8.local systemd[1]: Starting OpenSSH server daemon… Dec 29 20:17:11 rhel8.local sshd[820]: Server listening on 0.0.0.0 port 22. Dec 29 20:17:11 rhel8.local sshd[820]: Server listening on :: port 22. Dec 29 20:17:11 rhel8.local systemd[1]: Started OpenSSH server daemon. Dec 29 20:19:03 rhel8.local sshd[1499]: Accepted publickey for jmutai from 192.168.122.1 port 35902 ssh2: RSA SHA256:b/8AoYgbThoBYPcFh7CetJuGY/Tl7s4fi> Dec 29 20:19:03 rhel8.local sshd[1499]: pam_unix(sshd:session): session opened for user jmutai by (uid=0)
创建Ansible库存文件,默认为/etc/ansible/hosts
我喜欢在工作目录中创建列表文件。
$vim hosts
复制要管理的远程服务器的IP地址,并将其添加到Ansible库存文件中。
$echo "192.168.122.197" > hosts
我们还可以创建一组主机,如下所示:
[web] 192.168.122.197 [db] 192.168.122.198 [staging] 192.168.122.199 192.168.122.200 192.168.122.201
生成SSH密钥并将其复制到远程服务器。
$ssh-keygen $ssh-copy-id theitroad@localhost
使用ping模块进行测试:
$ansible -i hosts 192.168.122.197 -m ping 192.168.122.197 | SUCCESS => { "changed": false, "ping": "pong" }
-i选项用于提供列表文件的路径。我们应该获得与主机组名称相同的输出。
$ansible -i hosts web -m ping 192.168.122.197 | SUCCESS => { "changed": false, "ping": "pong" }
对于需要sudo的命令,请传递选项--ask-become-pass
。这将要求特权升级密码。这可能需要安装sshpass
程序。
$ansible -i hosts web -m command -a "sudo yum install vim" --ask-become-pass .... 192.168.122.197 | CHANGED | rc=0 >> Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 0:52:23 ago on Sat 29 Dec 2016 08:28:46 PM EAT. Package vim-enhanced-2:8.0.1763-7.el8.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete!
现在,我们已经在RHEL 8/CentOS 8服务器或者工作站上安装了Ansible。我们可以从Ansible官方文档中了解有关使用Ansible管理服务器的更多信息。