如何在 Ubuntu 16.04 上安装和配置 ansible?
答案1
我没有使用过Ansible
,但我发现这个来自 Digital Ocean 的教程简单易懂,步骤如下:
安装:
sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
配置 Ansible 主机:
编辑
sudo nano /etc/ansible/hosts
:由于本教程使用虚拟主机,因此在真实情况下会添加这些主机:
[group_name] alias ansible_ssh_host=your_server_ip
group_name 是一个组织标签,可让您用一个词来引用其下列出的任何服务器。别名只是引用该服务器的名称。因此,在我们的场景中,我们假设我们有三台服务器要用 Ansible 来控制。可以通过键入以下内容从 Ansible 服务器访问这些服务器:
ssh root@your_server_ip
我们假设服务器的 IP 地址为
192.0.2.1
、192.0.2.2
和192.0.2.3
。我们将进行设置,以便可以将它们分别称为 host1、host2 和 host3,或作为一组服务器:[servers] host1 ansible_ssh_host=192.0.2.1 host2 ansible_ssh_host=192.0.2.2 host3 ansible_ssh_host=192.0.2.3
使用我们当前的设置,如果我们尝试使用 Ansible 连接到这些主机中的任何一个,该命令都会失败(假设您不是以 root 用户身份操作)。这是因为您的 SSH 密钥嵌入在远程系统上的 root 用户中,Ansible 默认会尝试以您当前的用户身份进行连接。连接尝试将出现此错误:
host1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }
在 Ansible 服务器上,我们使用名为 demo 的用户。Ansible 将尝试使用 ssh demo@server 连接到每个主机。如果 demo 用户不在远程系统上,则此方法无效。我们可以创建一个文件,告诉“servers”组中的所有服务器使用 root 用户进行连接。为此,我们将在 Ansible 配置结构中创建一个名为 group_vars 的目录。在此文件夹中,我们可以为要配置的每个组创建 YAML 格式的文件:
sudo mkdir /etc/ansible/group_vars sudo nano /etc/ansible/group_vars/servers
添加这个:
--- ansible_ssh_user: root
- 如果您想要指定每台服务器的配置详细信息(无论与哪个组关联),可以将这些详细信息放在 /etc/ansible/group_vars/all 文件中。可以通过在 /etc/ansible/host_vars 目录下创建文件来配置单个主机。
使用简单的 Ansible 命令:
ansible -m ping all # Output: host1 | SUCCESS => { "changed": false, "ping": "pong" } host3 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }
“全部”表示所有主机。我们也可以很容易地指定一个组:
ansible -m ping servers
我们还可以指定单个主机:
ansible -m ping host1
我们可以通过用冒号分隔来指定多个主机:
ansible -m ping host1:host2
“shell”模块允许我们向远程主机发送终端命令并检索结果。例如,要找出 host1 机器上的内存使用情况,我们可以使用:
ansible -m shell -a 'free -m' host1 # Result: host1 | SUCCESS | rc=0 >> total used free shared buffers cached Mem: 3954 227 3726 0 14 93 -/+ buffers/cache: 119 3834 Swap: 0 0 0
更多信息: