Ansible 在 ubuntu16.04LTS 上安装和配置

Ansible 在 ubuntu16.04LTS 上安装和配置

如何在 Ubuntu 16.04 上安装和配置 ansible?

答案1

我没有使用过Ansible,但我发现这个来自 Digital Ocean 的教程简单易懂,步骤如下:

  1. 安装:

    sudo apt-add-repository ppa:ansible/ansible
    sudo apt-get update
    sudo apt-get install ansible
    
  2. 配置 Ansible 主机:

    1. 编辑sudo nano /etc/ansible/hosts

      • 由于本教程使用虚拟主机,因此在真实情况下会添加这些主机:

        [group_name]
        alias ansible_ssh_host=your_server_ip
        
      • group_name 是一个组织标签,可让您用一个词来引用其下列出的任何服务器。别名只是引用该服务器的名称。因此,在我们的场景中,我们假设我们有三台服务器要用 Ansible 来控制。可以通过键入以下内容从 Ansible 服务器访问这些服务器:

        ssh root@your_server_ip
        
    2. 我们假设服务器的 IP 地址为192.0.2.1192.0.2.2192.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
      
  3. 使用我们当前的设置,如果我们尝试使用 Ansible 连接到这些主机中的任何一个,该命令都会失败(假设您不是以 root 用户身份操作)。这是因为您的 SSH 密钥嵌入在远程系统上的 root 用户中,Ansible 默认会尝试以您当前的用户身份进行连接。连接尝试将出现此错误:

    host1 | UNREACHABLE! => {
          "changed": false,
          "msg": "Failed to connect to the host via ssh.",
          "unreachable": true
    }
    
  4. 在 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 目录下创建文件来配置单个主机。
  5. 使用简单的 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
      

更多信息:

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-ubuntu-16-04

相关内容