如何在Debian 8 (Jessie)上安装Ansible
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 Hyman@theitroad_host
步骤2 -安装Ansible Debian 8
Ansible为Debian系统的安装提供了官方PPA。
将下面一行添加到 /etc/apt/sources.list文件:
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 hosts文件(/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/Hyman/.ssh/aws.pem
组变量配置
我们可以在组配置下配置组的通用变量设置。
组文件名必须与' group_vars '目录下的组名称(如:webservers)相同。
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