Ansible Tower、Ansible AWX 与 Ansible Galaxy 使用指南
1. Ansible AWX 安装与使用
1.1 Docker 部分安装
首先,我们需要安装 Docker 相关的软件包。以下是具体的任务配置:
- name: install the docker packages
yum:
name: "{{ item }}"
state: "installed"
update_cache: "yes"
with_items: "{{ docker.packages }}"
- name: install pip
easy_install:
name: pip
state: latest
- name: install the python packages
pip:
name: "{{ item }}"
with_items: "{{ docker.pip }}"
- name: put selinux into permissive mode
selinux:
policy: targeted
state: permissive
- name: start docker and configure to start on boot
service:
name: "docker"
state: "started"
enabled: "yes"
完成上述步骤后,Docker 部分的 AWX 安装就完成了,我们可以继续进行下一个角色的安装。
1.2 AWX 角色创建与配置
通过以下命令创建 AWX 角色:
$ ansible-galaxy init roles/awx
roles/awx/defaults/main.yml
中的默认变量如下:
awx:
repo_url: "https://github.com/ansible/awx.git"
logo_url: "https://github.com/ansible/awx-logos.git"
repo_path: "~/awx/"
packages:
- "git"
pip:
- "ansible"
- "boto"
- "boto3"
- "botocore"
install_command: 'ansible-playbook -i inventory --extra-vars "awx_official=true" install.yml'
这些变量的含义如下:
-
awx.repo_url
:AWX 的主仓库 URL。
-
awx.logo_url
:官方 logo 包的仓库 URL。
-
awx.repo_path
:代码检出的路径。
-
awx.packages
:需要使用 yum 安装的额外软件包。
-
awx.pip
:需要使用 PIP 安装的 Python 软件包。
-
awx.install_command
:安装 Ansible AWX 的命令。
接下来,将任务添加到
roles/awx/tasks/main.yml
中:
- name: install the awx packages
yum:
name: "{{ item }}"
state: "installed"
update_cache: "yes"
with_items: "{{ awx.packages }}"
- name: install the python packages
pip:
name: "{{ item }}"
with_items: "{{ awx.pip }}"
- name: check out the awx repo
git:
repo: "{{ awx.repo_url }}"
dest: "{{ awx.repo_path }}"
clone: "yes"
update: "yes"
- name: check out the awx logos repo
git:
repo: "{{ awx.logo_url }}"
dest: "{{ awx.repo_path }}"
clone: "yes"
update: "yes"
- name: install awx
command: "{{ awx.install_command }}"
args:
chdir: "{{ awx.repo_path }}installer"
1.3 运行 playbook
添加主机清单信息到
production
文件:
box ansible_host=10.20.30.50.nip.io
[awx]
box
[awx:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_private_key_file=~/.ssh/id_rsa
host_key_checking=False
在
site.yml
文件中添加以下内容:
---
- hosts: awx
gather_facts: true
become: yes
become_method: sudo
vars_files:
- group_vars/common.yml
roles:
- roles/docker
- roles/awx
启动 Vagrant 盒子:
$ vagrant up
$ vagrant up --provider=vmware_fusion
运行 playbook:
$ ansible-playbook -i production site.yml
完成后,打开浏览器访问
http://10.20.30.50.nip.io/
,等待几分钟后会出现登录提示,用户名和密码为
admin/password
。
1.4 使用 Ansible AWX
登录后,界面与 Ansible Tower 类似,但菜单移到了左侧且选项更多。操作步骤如下:
1. 点击左侧菜单的
PROJECTS
,下载
hello-world
示例的最新 SVM 版本。
2. 点击
TEMPLATES
,点击
+
按钮,选择
Job Template
。
3. 填写以下详细信息:
-
NAME
:Demo Template
-
DESCRIPTION
:Run the hello-world example
-
JOB TYPE
:Run
-
INVENTORY
:选择
Demo Inventory
-
PROJECT
:选择
Demo Project
-
PLAYBOOK
:选择
hello-world.yml
-
CREDENTIAL
:选择
Demo Credential
-
FORKS
:默认
-
LIMIT
:留空
-
VERBOSITY
:0 (Normal)
-
INSTANCE GROUPS
、
JOB TAGS
、
SKIP TAGS
、
LABELS
:留空
-
SHOW CHANGES
:关闭
-
OPTIONS
和
EXTRA VARIABLES
:默认值
4. 点击
SAVE
按钮。
5. 点击火箭图标运行
hello world
playbook。
1.5 AWX 总结
目前,Red Hat 不建议在生产环境中使用 Ansible AWX,但它相对稳定,且具有一些 Ansible Tower 自支持版本没有的功能,如支持第三方认证服务和工作流,对管理的主机数量也没有限制。不过,需要考虑其开发周期和升级对日常运行的影响。
2. Ansible Galaxy 介绍与使用
2.1 Ansible Galaxy 概述
Ansible Galaxy 是一个社区贡献角色的在线仓库,网址为
https://galaxy.ansible.com/
。它有以下特点:
- 提供超过 15,000 个角色,涵盖各种任务,支持几乎所有 Ansible 支持的操作系统。
- 可以使用
ansible-galaxy
命令从命令行与网站交互,包括下载、搜索和发布角色。
- Red Hat 已将 Ansible Galaxy 代码开源,可在防火墙后运行自己的版本。
2.2 使用 Ansible Galaxy 角色安装 Jenkins
以下是创建安装 Jenkins 的 playbook 的步骤:
步骤 1:创建必要的文件
$ mkdir jenkins
$ cd jenkins
$ touch production requirements.yml site.yml Vagrantfile
步骤 2:定义要下载的角色
在
requirements.yml
文件中添加以下内容:
- src: "geerlingguy.java"
- src: "geerlingguy.jenkins"
下载角色:
$ ansible-galaxy install -r requirements.yml
步骤 3:编写 site.yml 文件
---
- hosts: jenkins
gather_facts: true
become: yes
become_method: sudo
vars:
java_packages: "java-1.8.0-openjdk"
jenkins_hostname: "10.20.30.60.nip.io"
jenkins_admin_username: "ansible"
jenkins_admin_password: "Pa55w0rD"
roles:
- geerlingguy.java
- geerlingguy.jenkins
步骤 4:配置生产主机清单文件
box ansible_host=10.20.30.60.nip.io
[jenkins]
box
[jenkins:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_private_key_file=~/.ssh/id_rsa
host_key_checking=False
步骤 5:配置 Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
API_VERSION = "2"
BOX_NAME = "centos/7"
BOX_IP = "10.20.30.60"
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
步骤 6:启动 Jenkins 服务器
启动 Vagrant 盒子:
$ vagrant up
$ vagrant up --provider=vmware_fusion
运行 playbook:
$ ansible-playbook -i production site.yml
完成后,访问
http://10.20.30.60.nip.io:8080/
,使用
site.yml
文件中定义的管理员用户名和密码登录。
总结
通过本文,我们学习了 Ansible AWX 的安装和使用,以及 Ansible Galaxy 的基本概念和如何使用其角色来安装 Jenkins。Ansible AWX 为自动化管理提供了一个开源的替代方案,而 Ansible Galaxy 则为我们提供了丰富的社区角色资源,帮助我们更高效地完成自动化任务。
Ansible Tower、Ansible AWX 与 Ansible Galaxy 使用指南
3. Ansible AWX 与 Ansible Tower 的对比
| 特性 | Ansible AWX | Ansible Tower |
|---|---|---|
| 成本 | 开源免费 | 商业软件,有不同的版本和价格 |
| 功能 | 支持第三方认证服务和工作流,管理主机数量无限制 | 部分功能需付费版本支持,管理主机数量有限制 |
| 稳定性 | 处于持续开发中,升级可能有小问题 | 经过更多测试,稳定性较高 |
| 界面 | 菜单在左侧,选项更多 | 菜单在顶部 |
从表格可以看出,Ansible AWX 和 Ansible Tower 在成本、功能、稳定性和界面等方面存在差异。用户可以根据自己的需求和预算来选择合适的工具。
4. 使用 Ansible Galaxy 角色的优势与注意事项
4.1 优势
- 节省时间 :无需自己编写所有的角色,可直接使用社区贡献的角色,快速完成任务。
- 功能丰富 :超过 15,000 个角色涵盖了各种任务,支持多种操作系统。
- 社区支持 :社区贡献的角色经过了一定的测试和验证,并且可以获得社区的支持和更新。
4.2 注意事项
- 版本兼容性 :不同版本的角色可能存在兼容性问题,需要注意选择合适的版本。
- 安全性 :使用社区角色时,要确保角色的来源可靠,避免引入安全风险。
- 自定义需求 :社区角色可能无法完全满足自定义需求,需要进行适当的修改。
5. 流程图展示
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(选择自动化工具):::process
B --> C{使用 Ansible AWX?}:::decision
C -->|是| D(安装 Docker 部分):::process
C -->|否| E(考虑 Ansible Tower):::process
D --> F(创建 AWX 角色):::process
F --> G(运行 playbook):::process
G --> H(使用 Ansible AWX):::process
E --> I(根据预算选择版本):::process
I --> J(使用 Ansible Tower):::process
H --> K([结束]):::startend
J --> K
这个流程图展示了在选择自动化工具时,根据需求可以选择 Ansible AWX 或 Ansible Tower,并分别进行相应的操作,最终完成自动化任务。
6. 常见问题解答
-
Ansible AWX 安装失败怎么办?
- 检查网络连接,确保可以访问 GitHub 等资源。
- 查看日志文件,找出具体的错误信息。
- 检查变量配置是否正确。
-
使用 Ansible Galaxy 角色时遇到兼容性问题怎么办?
- 查看角色的文档,了解其支持的版本范围。
- 尝试使用不同版本的角色。
- 向社区寻求帮助。
-
Ansible AWX 和 Ansible Tower 可以同时使用吗?
- 可以,它们可以在不同的环境中使用,根据需求选择合适的工具。
总结与展望
通过本文,我们详细介绍了 Ansible AWX 的安装和使用,以及 Ansible Galaxy 的基本概念和如何使用其角色来安装 Jenkins。同时,对比了 Ansible AWX 和 Ansible Tower 的差异,分析了使用 Ansible Galaxy 角色的优势和注意事项。
在未来的自动化管理中,Ansible AWX 和 Ansible Galaxy 将继续发挥重要作用。随着社区的不断发展,Ansible Galaxy 上的角色会越来越丰富,功能也会越来越强大。而 Ansible AWX 作为开源的自动化管理工具,将吸引更多的用户和开发者参与,不断完善和优化。用户可以根据自己的需求和场景,灵活选择合适的工具和角色,提高自动化管理的效率和质量。
超级会员免费看
694

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



