29、深入探索Ansible Tower与Ansible AWX

Ansible Tower与AWX深度解析

深入探索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` 组。
  1. 添加模板 :点击顶部菜单中的 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 :保持默认
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为自动化部署和管理提供了强大的工具,通过合理使用和配置,可以提高工作效率,降低运维成本。希望本文能够帮助你更好地理解和使用这些工具,在实际项目中发挥它们的最大价值。

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器的建模仿真展开,重点介绍了基于Matlab的飞行器动力学模型构建控制系统设计方法。通过对四轴飞行器非线性运动方程的推导,建立其在三维空间中的姿态位置动态模型,并采用数值仿真手段实现飞行器在复杂环境下的行为模拟。文中详细阐述了系统状态方程的构建、控制输入设计以及仿真参数设置,并结合具体代码实现展示了如何对飞行器进行稳定控制轨迹跟踪。此外,文章还提到了多种优化控制策略的应用背景,如模型预测控制、PID控制等,突出了Matlab工具在无人机系统仿真中的强大功能。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程师;尤其适合从事飞行器建模、控制算法研究及相关领域研究的专业人士。; 使用场景及目标:①用于四轴飞行器非线性动力学建模的教学科研实践;②为无人机控制系统设计(如姿态控制、轨迹跟踪)提供仿真验证平台;③支持高级控制算法(如MPC、LQR、PID)的研究对比分析; 阅读建议:建议读者结合文中提到的Matlab代码仿真模型,动手实践飞行器建模控制流程,重点关注动力学方程的实现控制器参数调优,同时可拓展至多自由度或复杂环境下的飞行仿真研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值