30、Ansible Tower、Ansible AWX 与 Ansible Galaxy 使用指南

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. 常见问题解答
  1. Ansible AWX 安装失败怎么办?
    • 检查网络连接,确保可以访问 GitHub 等资源。
    • 查看日志文件,找出具体的错误信息。
    • 检查变量配置是否正确。
  2. 使用 Ansible Galaxy 角色时遇到兼容性问题怎么办?
    • 查看角色的文档,了解其支持的版本范围。
    • 尝试使用不同版本的角色。
    • 向社区寻求帮助。
  3. Ansible AWX 和 Ansible Tower 可以同时使用吗?
    • 可以,它们可以在不同的环境中使用,根据需求选择合适的工具。

总结与展望

通过本文,我们详细介绍了 Ansible AWX 的安装和使用,以及 Ansible Galaxy 的基本概念和如何使用其角色来安装 Jenkins。同时,对比了 Ansible AWX 和 Ansible Tower 的差异,分析了使用 Ansible Galaxy 角色的优势和注意事项。

在未来的自动化管理中,Ansible AWX 和 Ansible Galaxy 将继续发挥重要作用。随着社区的不断发展,Ansible Galaxy 上的角色会越来越丰富,功能也会越来越强大。而 Ansible AWX 作为开源的自动化管理工具,将吸引更多的用户和开发者参与,不断完善和优化。用户可以根据自己的需求和场景,灵活选择合适的工具和角色,提高自动化管理的效率和质量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值