快速入门:在 Azure 中的 Linux 虚拟机上安装 Ansible

使用 Ansible 可以在环境中自动部署和配置资源。 本文介绍如何为某些最常用的 Linux 分发版配置 Ansible。 若要在其他分发版中安装 Ansible,请调整适用于特定平台的安装包。

先决条件

  • Azure 订阅:如果没有 Azure 订阅,请在开始前创建一个试用订阅
  • Azure 服务主体创建服务主体,记下以下值:appId、displayName、密码和租户 。
  • 访问 Linux 或 Linux 虚拟机 - 如果没有 Linux 计算机,请创建 Linux 虚拟机

在 Azure Linux 虚拟机上安装 Ansible

登录到 Linux 计算机,然后选择下述发行版之一,了解安装 Ansible 的步骤:

CentOS 7.4

在本部分,我们将 CentOS 配置为使用 Ansible。

  1. 打开终端窗口。

  2. 输入以下命令,为 Azure Python SDK 模块安装所需的包:

    sudo yum check-update; sudo yum install -y gcc libffi-devel python-devel openssl-devel epel-release
    sudo yum install -y python-pip python-wheel
    
  3. 输入以下命令安装所需的 Ansible 包:

    sudo pip install ansible[azure]
    
  4. 创建 Azure 凭据

Ubuntu 16.04 LTS

在本部分,我们将 Ubuntu 配置为使用 Ansible。

  1. 打开终端窗口。

  2. 输入以下命令,为 Azure Python SDK 模块安装所需的包:

    sudo apt-get update && sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip
    
  3. 输入以下命令安装所需的 Ansible 包:

    sudo pip install ansible[azure]
    
  4. 创建 Azure 凭据

SLES 12 SP2

在本部分,我们将 SLES 配置为使用 Ansible。

  1. 打开终端窗口。

  2. 输入以下命令,为 Azure Python SDK 模块安装所需的包:

    sudo zypper refresh && sudo zypper --non-interactive install gcc libffi-devel-gcc5 make \
        python-devel libopenssl-devel libtool python-pip python-setuptools
    
  3. 输入以下命令安装所需的 Ansible 包:

    sudo pip install ansible[azure]
    
  4. 输入以下命令以删除有冲突的 Python 加密包:

    sudo pip uninstall -y cryptography
    
  5. 创建 Azure 凭据

创建 Azure 凭据

需要以下信息才能配置 Ansible 凭据:

  • Azure 订阅 ID
  • 服务主体值

如果使用 Ansible Tower 或 Jenkins,请将服务主体值声明为环境变量。

使用以下方法之一配置 Ansible 凭据:

创建 Ansible 凭据文件

在本部分,我们将创建一个本地凭据文件,以便向 Ansible 提供凭据。

有关定义 Ansible 凭据的详细信息,请参阅为 Azure 模块提供凭据

  1. 对于开发环境,请主机虚拟机上创建名为 credentials 的文件:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. 将以下代码行插入到该文件中。 请将占位符替换为服务主体值。

    [default]
    subscription_id=<your-subscription_id>
    client_id=<security-principal-appid>
    secret=<security-principal-password>
    tenant=<security-principal-tenant>
    cloud_environment=AzureChinaCloud
    
  3. 保存并关闭该文件。

使用 Ansible 环境变量

在本部分,我们将导出服务主体值以配置 Ansible 凭据。

  1. 打开终端窗口。

  2. 导出服务主体值:

    export AZURE_SUBSCRIPTION_ID=<your-subscription_id>
    export AZURE_CLIENT_ID=<security-principal-appid>
    export AZURE_SECRET=<security-principal-password>
    export AZURE_TENANT=<security-principal-tenant>
    export AZURE_CLOUD_ENVIRONMENT=AzureChinaCloud
    

验证配置

若要验证配置是否成功,请使用 Ansible 创建一个 Azure 资源组。

  1. 在 Azure 本地 Shell 中,创建名为 rg.yml 的文件。

    code rg.yml
    
  2. 在编辑器中粘贴以下代码:

    ---
    - hosts: localhost
     connection: local
     tasks:
       - name: Create resource group
         azure_rm_resourcegroup:
           name: ansible-rg
           location: chinaeast
         register: rg
       - debug:
           var: rg
    
  3. 保存文件并退出编辑器。

  4. 使用 ansible-playbook 命令运行 playbook:

    ansible-playbook rg.yml
    

运行 playbook 后,可看到类似于以下结果的输出:

PLAY [localhost] *********************************************************************************

TASK [Gathering Facts] ***************************************************************************
ok: [localhost]

TASK [Create resource group] *********************************************************************
changed: [localhost]

TASK [debug] *************************************************************************************
ok: [localhost] => {
    "rg": {
        "changed": true,
        "contains_resources": false,
        "failed": false,
        "state": {
            "id": "/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/ansible-rg",
            "location": "chinaeast",
            "name": "ansible-rg",
            "provisioning_state": "Succeeded",
            "tags": null
        }
    }
}

PLAY RECAP ***************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0

后续步骤