如何在Ubuntu 16.04 (Xenial)上安装Ansible

时间:2019-05-19 01:26:34  来源:igfitidea点击:

Ansible是一种自动化工具,用于从单机管理多个远程主机。
它为我们提供了一个易于配置的大量远程主机。
例如,我们正在多台机器上执行相同的任务,Ansible为我们提供了自动执行这些任务的选项。
本教程你在Ubuntu 16.04 (Xenial) LTS系统上安装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步-在Ubuntu 16.04上安装Ansible

Ansible为Ubuntu系统上的安装提供了官方PPA。
运行下面的命令来配置Ansible PPA到你的Ubuntu 18.04系统。

sudo apt-add-repository ppa:ansible/ansible

然后运行以下命令安装Ansible:

sudo apt update
sudo apt install ansible

步骤3 -配置Ansible主机和组

服务器准备好了,可以进行远程主机管理和自动化。
你可以有许多你需要的主机,并管理他们与一个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