使用 Ansible 开始使用基础设施即代码(实用指南)

大家好,
系统解决方案部门
SRE团队的成员
上次我写了关于 Ansible 工具以及如何安装它的文章,所以这次我想最终介绍一下如何运行 Ansible。
Ansible 运行时配置
以下是运行 Ansible 所需的内容:
- hosts 文件(清单文件)
- 剧本
- 模块
我们会逐一解释。
什么是 hosts 文件(清单文件)?
hosts 文件(清单文件)用于输入目标主机信息。
以下示例展示了如何输入目标主机信息。
[全部] XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX [网页] XXX.XXX.XXX.XXX [数据库] XXX.XXX.XXX.XXX
您可以在每个方括号 [] 中指定执行主机组。
将上述内容保存为任意名称,执行 Ansible 时,添加 -i 选项并指定保存的文件,这样每个命令都将针对指定的主机执行。
什么是行动计划?
这是一个文件,您可以在其中输入要在目标主机上运行的命令和工作流程。
以下是安装 Apache 的 playbook。
--- # 主操作 playbook - name: 将通用配置应用于所有节点 hosts: all remote_user: [username] sudo: yes tasks: - name: apache-install yum: name=httpd state=present
“- name”部分表示此过程的开始,“name”部分是此过程的名称。
您可以在主机部分指定上述分组信息。
在本例中,我们指定 [all] 来表示所有主机。
remote_user 部分指定目标主机上的用户。
如果您未指定远程目标主机上存在的用户,则命令将不会执行,并且会发生错误。
sudo 部分指定是否以远程用户身份使用 root 权限运行命令。
由于本例中需要进行安装,因此需要 root 权限,所以我们将其设置为 yes。
任务下方的部分是实际要执行的命令。
在本例中,它是使用 yum 命令安装 Apache 的命令。
什么是模块?
您可能在上面的 playbook 部分看到了命令部分,该部分就是各个模块。
上次我们介绍了模块作为 Ansible 的一项功能,目前模块是用多种语言开发的,
有些模块不仅可以配置服务器本身,还可以配置云平台。
更多详情,请参阅以下链接,查看实际模块列表。
链接: https
咱们来实际试一试吧!!
现在终于可以运行 Ansible 了。
首先,在 hosts 文件中输入目标主机。
# vi hosts ======================== [all] XXX.XXX.XXX.XXX ========================
接下来,我们将创建主剧本。
# vi operation.yml ========================= --- # 主 Play 操作 playbook - name: 将通用配置应用于所有节点 hosts: all remote_user: ec2-user sudo: yes tasks: - name: apache-install yum: name=httpd state=present ========================
最后,使用 ansible-playbook 命令在目标主机上执行要运行的命令。
*用于登录目标主机的 SSH 私钥通过 --private-key= 指定。
# ansible-playbook --private-key=key/id_rsa -i hosts operation.yml PLAY [将通用配置应用到所有节点] ************************************************ TASK [收集信息] ***************************************************************** ok: [XXX.XXX.XXX.XXX] TASK [apache-install] **************************************************************** changed: [XXX.XXX.XXX.XXX] PLAY RECAP **************************************************************** XXX.XXX.XXX.XXX : ok=2 changed=1 unreachable=0 failed=0
我会检查它是否已安装。
$ rpm -qa | grep httpd httpd-tools-2.2.34-1.16.amzn1.x86_64 httpd-2.2.34-1.16.amzn1.x86_64
安装成功了!!!
概括
这次我写了关于如何运行 Ansible 的文章。
下次我想写写如何设置角色等等。
希望大家继续对 Ansible 和运维/建设自动化感兴趣。
今天就到这里。
1