Ansible 是一种自动化工具,用于从单台计算机管理多个远程主机。它为您提供了针对大量远程主机的轻松配置。例如,您在多台机器上执行相同的任务,Ansible 为您提供了自动执行这些任务的选项。
本教程将帮助您在 Debian 8 (Jessie) 系统上安装 Ansible。
第 1 步 – 配置 SSH 访问
您可以为远程 Linux Ansible 主机配置基于密钥的 ssh。因此 SSH 不需要密码。 Ansible 还允许您使用 ssh 密码,但基于密钥的 ssh 更安全。
在 Ansible 服务器上生成 ssh 密钥对:
ssh-keygen
将公钥复制到您需要通过此 ssh 密钥连接的所有远程主机。
ssh-copy-id -i ~/.ssh/id_rsa.pub ssh_user@remote_host
步骤 2 – 在 Debian 8 上安装 Ansible
Ansible 为 Debian 系统上的安装提供了官方 PPA。
将以下行添加到/etc/apt/sources.list file:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
然后运行以下命令来添加签名密钥并安装 Ansible。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
sudo apt update
sudo apt install ansible
步骤 3 – 配置 Ansible 主机和组
您的服务器已准备好使用 Ansible 进行远程主机管理和自动化。您可以拥有所需的多个主机,并使用单个 Ansible 服务器来管理它们。
在这里,您需要在 Ansible 主机文件 (/etc/ansible/hosts) 中定义远程系统。您还可以创建具有相似类型的主机组。在这里,您需要将主机正确分组。组用于在其下定义的所有远程主机上执行一项任务。
编辑 Ansible 主机配置文件。例如:
sudo nano /etc/ansible/hosts
添加您的主机并将其分组。一个主机可以添加到多个组下.
[webservers]
web-host1
web-host2
[dbservers]
db-host1
下图将帮助您了解组和组下的主机。
单主机变量配置
您需要为主机定义设置。主机特定文件必须与host_vars目录下的主机同名(例如:web-host1)。
sudo mkdir /etc/ansible/host_vars
sudo vi /etc/ansible/host_vars/web-host1
将 web-host1 的 SSH 设置添加到此文件中。
ansible_ssh_host: 192.168.1.15
ansible_ssh_port: 22
ansible_ssh_user: root
如果您没有使用步骤 1 来建立该主机的 ssh 连接。您还可以将以下方法之一添加到 web-hosts1 配置文件中以进行身份验证。
ansible_ssh_pass: secret_password
ansible_ssh_private_key_file: /home/rahul/.ssh/aws.pem
组变量配置
您可以在组配置下配置组的公共变量设置。组文件名必须与下面的组名(例如:webservers)相同group_vars
目录。
sudo mkdir /etc/ansible/group_vars
sudo vi /etc/ansible/group_vars/webservers
将公共变量添加到该文件中,供该组下添加的所有主机使用。
ansible_ssh_port: 22
ansible_ssh_user: root
第 4 步 – 测试 Ansible 设置
您的 Ansible 设置已准备好进行测试。要使用 ping 模块测试所有主机的连接,例如:
ansible -m ping all
测试特定主机或主机组的连接
ansible -m ping web-host1 ## Specific host
ansible -m ping webservers ## Specific group
您还可以使用 shell 模块运行命令。例如,测试 web-host1 上的可用内存。您还可以为一个组执行相同的任务。只需使用组名而不是主机名。
ansible -m shell -a 'free -m' web-host1