深入探索Ansible Tower与Ansible AWX
1. Ansible Tower安装与初步使用
在安装Ansible Tower时,剧本中会检查是否以root用户身份运行。通常情况下,剧本期望在要安装Ansible Tower的机器上以root用户身份运行。不过,我们采用了不同的方式,需要使用
--become
标志。安装过程大约需要20分钟,安装程序会执行大量任务。
安装完成后,还需完成以下步骤:
1.
登录
:在浏览器中输入URL
https://10.20.30.40.nip.io/
。首次打开Tower时,会出现关于SSL证书的警告,因为部署期间安装的证书是自签名的,可放心继续。在登录页面输入用户名
admin
和密码
password
(这是之前在清单文件中设置的),然后点击
SIGN IN
按钮。
2.
申请许可证
:登录后会进入一个页面,提示输入许可证文件。点击
REQUEST LICENSE
按钮,会转到
https://www.ansible.com/license/
。我们选择申请
FREE ANSIBLE TOWER TRIAL - LIMITED FEATURES UP TO 10 NODES
许可证,选择许可证类型,填写表格并按提示提交。稍等片刻,会收到几封邮件,其中一封包含许可证文件。复制附件中的许可证文件,使用Tower许可证页面上的
BROWSE
按钮上传,并查看并同意最终用户协议,最后点击
SUBMIT
。
2. 运行首个剧本
安装好Ansible Tower后,我们可以运行首个剧本。这里有一个已配置好的 “Hello World” 演示项目,它从
https://github.com/ansible/ansible-tower-samples/
下载示例剧本并显示 “Hello World” 消息。
运行步骤如下:
1.
下载剧本
:点击顶部菜单中的
PROJECTS
,找到
Demo Project
,将鼠标悬停在操作下的图标上,会显示每个图标的功能说明,点击第一个图标
Start an SCM update
。短时间后,
REVISION
和
LAST UPDATED
会被填充,这表示Ansible Tower已从GitHub下载了演示剧本。
2.
运行剧本
:点击顶部菜单中的
TEMPLATES
,会看到一个名为
Demo Job Template
的模板,在该行右侧有几个图标,点击看起来像火箭的图标
Start a job using this template
,即可运行演示作业,会进入一个页面,可监控作业进度。作业完成后,左侧会显示作业概述,包括状态、开始和结束时间以及请求执行作业的用户;右侧显示剧本输出,与从命令行执行剧本时看到的输出相同。
3. 运行AWS剧本
接下来,我们使用Ansible Tower部署AWS集群,使用的是托管在GitHub上的
aws-wordpress
剧本
https://github.com/russmckendrick/aws-wordpress/
。
在配置剧本之前,需要更新一些Python模块的版本,因为剧本的某些部分需要较新的Boto模块版本。操作步骤如下:
1.
SSH登录Ansible Tower主机
:运行命令
$ vagrant ssh
。
2.
切换到root用户
:运行命令
$ sudo -i
。
3.
切换到Ansible Tower使用的Python环境
:运行命令
$ source /var/lib/awx/venv/ansible/bin/activate
。
4.
升级boto库
:运行命令
$ pip install boto boto3 botocore --upgrade
。
5.
退出Python环境并注销
:运行命令
$ deactivate
,然后使用
exit
命令注销。
4. 配置项目、凭证、清单和模板
更新环境后,我们继续配置项目、凭证、清单和模板:
1.
添加新项目
:点击顶部菜单中的
PROJECTS
,然后点击右上角的
+ADD
按钮。在表单中输入以下信息:
-
NAME
:
AWS Project
-
DESCRIPTION
:
AWS WordPress Cluster
-
ORGANIZATION
:
Default
-
SCM TYPE
:
GIT
-
SCM URL
:
https://github.com/russmckendrick/aws-wordpress.git
-
SCM BRANCH/TAG/COMMIT
:
master
-
SCM CREDENTIAL
:留空,因为这是一个公共可访问的存储库
-
Clean
:勾选
-
Delete on Update
:勾选
-
Update on Launch
:勾选
-
CACHE TIMEOUT (SECONDS)
:留零
输入完详细信息后,点击
SAVE
。返回
PROJECTS
页面,会发现Ansible已下载了剧本的源代码。
2.
添加凭证
:点击顶部菜单中的设置图标(齿轮),选择
CREDENTIALS
,然后点击
+ADD
按钮。在表单中填写以下信息:
-
NAME
:
AWS API Credentials
-
DESCRIPTION
:
AWS API Credentials
-
ORGANIZATION
:
Default
-
CREDENTIAL TYPE
:点击放大镜图标,选择
Amazon Web Services
-
ACCESS KEY
:添加之前AWS章节中的访问密钥,例如
AKIAI5KECPOTNTTVM3EDA
-
SECRET KEY
:添加之前AWS章节中的秘密密钥,例如
Y4B7FFiSWl0Am3VIFc07lgnc/TAtK5+RpxzIGTr
-
STS TOKEN
:留空
填写完表单后,点击
SAVE
。保存后,
SECRET KEY
会被标记为
ENCRYPTED
,保存敏感信息时会被加密,只能选择
REPLACE
或
REVERT
,无法再次查看信息。
3.
添加清单
:点击顶部菜单中的
INVENTORIES
,然后点击
+ADD
按钮,从下拉列表中选择
Inventory
。在表单中输入以下信息:
-
NAME
:
AWS Inventory
-
DESCRIPTION
:
AWS Inventory
-
ORGANIZATION
:
Default
-
INSIGHTS CREDENTIALS
:留空
-
INSIGHTS GROUPS
:留空
-
VARIABLES
:
ansible_ssh_user: "centos"
ansible_ssh_private_key_file: "~/.ssh/id_rsa"
host_key_checking: "False"
输入完成后,点击 `SAVE` 。然后点击 `GROUPS` ,点击 `+ADD GROUP` ,添加 `ec2_instance` 组,填写名称和描述,变量留空,点击 `SAVE` ;重复此过程,添加 `already_running` 组。
-
添加模板
:点击顶部菜单中的
TEMPLATES,在+ADD按钮的下拉菜单中选择Job Template。填写以下信息:-
NAME
:
AWS - Launch -
DESCRIPTION
:
Launch and deploy WordPress instances -
JOB TYPE
:保持
Run -
INVENTORY
:点击图标选择
AWS Inventory -
PROJECT
:点击图标选择
AWS Project -
PLAYBOOK
:从下拉列表中选择
site.yml -
CREDENTIAL
:选择
Amazon Web Services类型,然后选择AWS API Credentials,同时选择Demo Credential for MACHINE - FORKS :保持默认
- LIMIT :留空
-
VERBOSITY
:保持
0 (Normal) - INSTANCE GROUPS, JOB TAGS, SKIP TAGS, LABELS :留空
-
SHOW CHANGES
:保持
OFF -
OPTIONS and EXTRA VARIABLES
:保持默认
点击SAVE。再次点击+ADD按钮,选择Job Template,使用以下信息添加第二个模板: -
NAME
:
AWS - Remove -
DESCRIPTION
:
Remove the WordPress cluster -
JOB TYPE
:保持
Run -
INVENTORY
:点击图标选择
AWS Inventory -
PROJECT
:点击图标选择
AWS Project -
PLAYBOOK
:从下拉列表中选择
remove.yml -
CREDENTIAL
:选择
Amazon Web Services类型,然后选择AWS API Credentials,同时选择Demo Credential for MACHINE - FORKS :保持默认
- LIMIT :留空
-
VERBOSITY
:保持
0 (Normal) - INSTANCE GROUPS, JOB TAGS, SKIP TAGS, LABELS :留空
-
SHOW CHANGES
:保持
OFF - OPTIONS and EXTRA VARIABLES :保持默认
-
NAME
:
5. 运行和移除剧本
配置完成后,我们可以运行和移除剧本:
1.
运行剧本
:点击顶部菜单中的
TEMPLATES
,点击
AWS - Launch
旁边的火箭图标,运行剧本,运行时间与从命令行执行相同。运行成功后,访问弹性负载均衡器URL,即可看到WordPress站点。
2.
移除集群
:点击顶部菜单中的
TEMPLATES
,点击
AWS - Remove
旁边的火箭图标,运行移除剧本。需要注意的是,为了使
remove.yml
剧本能在Ansible Tower中成功执行,需要更新
roles/remove/tasks/main.yml
中的一个任务,将:
- name: prompt
pause:
prompt: "Make sure the elastic load balancer has been terminated before proceeding"
替换为:
- name: wait for 2 minutes before continuing
pause:
minutes: 2
6. Ansible Tower版本概述
Ansible Tower有三个不同版本,各版本功能对比如下:
| 功能 | 自助支持版 | 标准版 | 高级版 |
| ---- | ---- | ---- | ---- |
| 仪表盘:获取Ansible Tower状态概述 | 是 | 是 | 是 |
| 实时作业输出:实时查看作业执行输出 | 是 | 是 | 是 |
| 作业调度:按计划执行作业,设置重复运行 | 是 | 是 | 是 |
| 从源代码控制拉取:将剧本托管在源代码控制中,如Git或SVN | 是 | 是 | 是 |
| 工作流:将多个剧本链接到一个作业中 | 否 | 是 | 是 |
| 基于角色的访问:对用户及其可访问内容进行细粒度控制 | 是 | 是 | 是 |
| 与第三方认证集成:将Tower安装与Active Directory或LDAP身份服务器挂钩 | 否 | 是 | 是 |
| 调查:为用户构建表单,作为作业运行的一部分,使用户无需编写YAML即可提供信息 | 否 | 是 | 是 |
| 红帽8x5支持 | 否 | 是 | 是 |
| 红帽24x7支持 | 否 | 否 | 是 |
当前Ansible Tower的许可证费用如下:
- 自助支持版(最多10个节点):免费
- 自助支持版(最多100个节点):每年5,000美元
- 自助支持版(最多250个节点):每年10,000美元
- 标准版(最多100个节点):每年10,000美元
- 标准版(超过100个节点):自定义定价,联系Ansible
- 高级版(最多100个节点):每年14,000美元
- 高级版(超过100个节点):自定义定价,联系Ansible
这些价格不包括红帽支持的Ansible引擎,如果需要支持的Ansible引擎,还需额外付费。由于Ansible Tower可能超出部分用户的预算,接下来我们将介绍Ansible AWX。
7. Ansible AWX安装准备
安装Ansible AWX需要一个Vagrant盒子、在Vagrant盒子上安装Docker以及一份AWX源代码。
为安装创建剧本结构,运行以下命令:
$ mkdir awx awx/group_vars awx/roles
$ touch awx/production awx/site.yml awx/group_vars/common.yml awx/Vagrantfile
使用的Vagrantfile内容如下:
# -*- mode: ruby -*-
# vi: set ft=ruby :
API_VERSION = "2"
BOX_NAME = "centos/7"
BOX_IP = "10.20.30.50"
DOMAIN = "nip.io"
PRIVATE_KEY = "~/.ssh/id_rsa"
PUBLIC_KEY = '~/.ssh/id_rsa.pub'
Vagrant.configure(API_VERSION) do |config|
config.vm.box = BOX_NAME
config.vm.network "private_network", ip: BOX_IP
config.vm.host_name = BOX_IP + '.' + DOMAIN
config.ssh.insert_key = false
config.ssh.private_key_path = [PRIVATE_KEY,
"~/.vagrant.d/insecure_private_key"]
config.vm.provision "file", source: PUBLIC_KEY, destination:
"~/.ssh/authorized_keys"
config.vm.provider "virtualbox" do |v|
v.memory = "2024"
v.cpus = "2"
end
config.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = "2024"
v.vmx["numvcpus"] = "2"
end
end
8. 创建Docker角色
第一个要创建的角色是Docker角色,使用以下命令初始化角色:
$ ansible-galaxy init roles/docker
更新
roles/docker/defaults/main.yml
文件内容如下:
docker:
gpg_key: "https://download.docker.com/linux/centos/gpg"
repo_url: "https://download.docker.com/linux/centos/docker-ce.repo"
repo_path: "/etc/yum.repos.d/docker-ce.repo"
packages:
- "docker-ce"
- "device-mapper-persistent-data"
- "lvm2"
- "python-setuptools"
- "libselinux-python"
pip:
- "docker"
roles/docker/tasks/main.yml
的内容应为:
- name: update all of the installed packages
yum:
name: "*"
state: "latest"
update_cache: "yes"
- name: add the gpg key for the docker repo
rpm_key:
key: "{{ docker.gpg_key }}"
state: "present"
- name: add docker repo from the remote url
get_url:
url: "{{ docker.repo_url }}"
dest: "{{ docker.repo_path }}"
mode: "0644"
通过以上步骤,我们完成了Ansible Tower的安装、使用以及Ansible AWX的安装准备工作。希望这些内容能帮助你更好地使用Ansible进行自动化部署。
深入探索Ansible Tower与Ansible AWX
9. Ansible Tower操作流程总结
为了更清晰地展示使用Ansible Tower部署和管理AWS集群的过程,我们可以用一个mermaid流程图来表示:
graph LR
A[安装Ansible Tower] --> B[登录并申请许可证]
B --> C[运行Hello World演示项目]
C --> D[准备运行AWS剧本(更新Python模块)]
D --> E[添加项目]
E --> F[添加凭证]
F --> G[添加清单]
G --> H[添加模板]
H --> I[运行AWS - Launch剧本]
I --> J[运行AWS - Remove剧本]
从这个流程图可以看出,整个过程是一个循序渐进的步骤,每个步骤都为后续的操作奠定基础。
10. Ansible Tower版本选择分析
在选择Ansible Tower版本时,需要根据自身的需求和预算来决定。以下是不同场景下的版本选择建议:
| 使用场景 | 推荐版本 | 原因 |
| ---- | ---- | ---- |
| 个人开发者或小型团队,预算有限,仅需基本功能 | 自助支持版 | 免费或低成本,具备基本的仪表盘、作业输出查看和调度等功能 |
| 中型团队,需要工作流、第三方认证集成等功能 | 标准版 | 提供了更多高级功能,满足团队协作和安全认证需求 |
| 大型企业,对系统稳定性和技术支持要求高 | 高级版 | 拥有全面的功能和24x7的红帽支持 |
11. Ansible AWX安装后续步骤展望
虽然我们已经完成了Ansible AWX安装的前期准备工作,包括创建剧本结构和初始化Docker角色,但后续还有一些步骤需要完成。以下是一个大致的后续步骤列表:
1.
安装Docker
:根据之前配置的Docker角色,使用Ansible来安装Docker。这涉及到运行相关的Ansible剧本,确保Docker在Vagrant盒子上正确安装。
2.
获取AWX源代码
:从官方渠道获取Ansible AWX的源代码,并将其部署到Vagrant盒子上。
3.
配置AWX
:对AWX进行必要的配置,如数据库设置、用户认证等。
4.
测试和验证
:安装完成后,进行测试和验证,确保AWX能够正常工作。
12. 总结与最佳实践
通过对Ansible Tower和Ansible AWX的探索,我们可以总结出以下最佳实践:
-
安装与配置
:在安装Ansible Tower时,严格按照步骤进行操作,特别是许可证的申请和Python模块的更新。对于Ansible AWX,提前规划好剧本结构和角色,确保安装过程顺利。
-
版本选择
:根据自身需求和预算,合理选择Ansible Tower的版本。如果预算有限,可以先从自助支持版开始,随着业务发展再升级到更高版本。
-
剧本管理
:在使用Ansible Tower或Ansible AWX时,对剧本进行有效的管理,包括项目的组织、凭证的安全存储和清单的合理配置。
-
故障排除
:当遇到问题时,利用Ansible Tower提供的实时作业输出和日志功能,快速定位和解决问题。对于Ansible AWX,同样要关注安装和运行过程中的日志信息。
总之,Ansible Tower和Ansible AWX为自动化部署和管理提供了强大的工具,通过合理使用和配置,可以提高工作效率,降低运维成本。希望本文能够帮助你更好地理解和使用这些工具,在实际项目中发挥它们的最大价值。
Ansible Tower与AWX深度解析
超级会员免费看
40

被折叠的 条评论
为什么被折叠?



