Ansible 部署
准备实验环境
实验环境 /etc/hosts
bash
10.1.8.10 controller.laoma.cloud controller
10.1.8.11 node1.laoma.cloud node1
10.1.8.12 node2.laoma.cloud node2
10.1.8.13 node3.laoma.cloud node3
10.1.8.14 node4.laoma.cloud node4
配置控制节点 laoma 用户使用laoma用户免密登录所有节点,并免提sudo提权执行任何命令。
bash
# 所有节点配置/etc/hosts
[root@all-node ~]# cat >> /etc/hosts <<EOF
################ ansible #################
10.1.8.10 controller.laoma.cloud controller
10.1.8.11 node1.laoma.cloud node1
10.1.8.12 node2.laoma.cloud node2
10.1.8.13 node3.laoma.cloud node3
10.1.8.14 node4.laoma.cloud node4
EOF
# 所有节点添加用户
[root@all-node ~]# useradd laoma
[root@all-node ~]# echo redhat | passwd --stdin laoma
# 所有节点,配置免密提权
[root@all-node ~]# echo 'laoma ALL=(ALL) NOPASSWD:ALL' >
/etc/sudoers.d/laoma
# 创建密钥对
[laoma@centos7 ~]$ [ -d ~/.ssh ] || mkdir -m 700 .ssh
[laoma@centos7 ~]$ ssh-keygen -t rsa -f .ssh/id_rsa -N ''
# 推送公钥到目标主机
[laoma@centos7 ~]$ sudo yum install -y sshpass
[laoma@centos7 ~]$ for host in controller node{1..4}
do
sshpass -p 123 ssh-copy-id laoma@$host
done
# 验证免密登录
[laoma@centos7 ~]$ for host in controller node{1..4}
do
ssh laoma@$host hostname
done
控制节点
控制节点用来安装 Ansible 软件的主机节点。控制节点可以是一个或多个,由 ansible 管理的主
机不用安装 Ansible。
提示 :控制节点是Linux或UNIX系统,不支持 Windows 作为控制节点。
安装 ansible
bash
[laoma@controller ~]$ sudo yum install -y ansible
[laoma@controller ~]$ ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path =
[u'/home/laoma/.ansible/plugins/modules',
u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/sitepackages/
ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5
20150623 (Red Hat 4.8.5-44)]
受管节点
Linux
受管节点满足的要求取决于控制节点连接它们的方式以及它们要运行的模块:
-
Python 版本:Linux和UNIX受管节点需要安装Python才能运行大部分的模块。
-
一些模块不需要Python。例如,raw模块的参数直接通过配置的远程shell运行,在没有
Python环境的设备上使用。不过,raw模块难以通过安全的幂等方式使用。
Windows
Ansible随附了多个专门为Microsoft Windows系统设计的模块。这些模块列在Ansible模块索引
的 Windows Modules 部分。
大部分专门为Microsoft Windows受管节点设计的模块需要在受管节点上:
- 安装 Power Shell 3.0或更高版本。
- 配置 Power Shell 远程连接。
- 安装.NET Framework 4.0或更高版本。
本课程的示例中使用基于Linux的受管节点,不会深入阐述管理基于Microsoft Windows的受管节点时的具体差别和必要调整。可以在Ansible网站上查看更多信息。
网络设备
还可以使用Ansible自动化来配置受管网络设备,例如路由器和交换机。Ansible包含大量专门为
此目的而设计的模块。其中包括对Cisco IOS、IOSXR和NX-OS的支持;Juniper Junos;AristaEOS;
以及基于VyOS的网络设备等。
由于大多数网络设备无法运行Python,因此Ansible在控制节点上运行网络模块,而不是在受管
节点上运行。特殊连接方法也用于与网络设备通信,通常使用SSH上的CLI、SSH上的XML或
HTTP(S)上的API。