docker安装ansible awx

awx简介

Ansible AWX是商业版Ansible Tower 的开源版本,AWX提供了一个基于web的用户界面、REST API和构建在Ansible之上的任务引擎。

借助Ansible AWX,您可以通过可视化仪表板,基于角色的访问控制,作业计划,集成通知和图形化inventory管理来集中控制IT基础架构。

借助图形化的AWX,能够更方便的编排和部署 Ansible Playbook,并提供集中的日志记录、审计和系统跟踪,通过REST API和CLI轻松将Ansible AWX嵌入现有工具和流程中。

项目地址:https://github.com/ansible/awx
docker安装ansible awx_第1张图片

docker安装awx

参考:https://github.com/ansible/awx/blob/devel/INSTALL.md

准备一台服务器,在本地使用docker方式部署awx。

安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker

安装docker-compose

version=1.26.2
curl -L https://get.daocloud.io/docker/compose/releases/download/${version}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

安装docker-compose python模块

yum install -y python3
pip3 install docker-compose -i https://mirrors.aliyun.com/pypi/simple/

下载awx

wget https://github.com/ansible/awx/archive/16.0.0.tar.gz
tar -zxvf 16.0.0.tar.gz

部署awx

yum install -y ansible

cd awx-16.0.0/installer/
ansible-playbook -i inventory install.yml

查看运行的docker

[root@jenkins ~]# cd /root/.awx/awxcompose

[root@jenkins awxcompose]# docker-compose ps -a
    Name                  Command               State          Ports        
----------------------------------------------------------------------------
awx_postgres   docker-entrypoint.sh postgres    Up      5432/tcp            
awx_redis      docker-entrypoint.sh /usr/ ...   Up      6379/tcp            
awx_task       /usr/bin/tini -- /usr/bin/ ...   Up      8052/tcp            
awx_web        /usr/bin/tini -- /bin/sh - ...   Up      0.0.0.0:80->8052/tcp

浏览器访问awx:http://10.39.140.196,默认用户名admin,密码password。
docker安装ansible awx_第2张图片

AWX使用示例

基本配置流程:

  1. 创建Credentials凭证,连接远程主机时进行认证
  2. 创建inventory,定义主机、主机组以及变量
  3. 创建projects ,指定playbooks文件,可选本地目录、git仓库或远程url归档等
  4. 创建templates,定义jobs模板,执行playbooks任务

创建Credentials

首先需要为主机创建凭证,选择Machine类型,可创建用户密码方式或ssh-key方式。

1、创建基于主机root用户及密码类型凭证:
docker安装ansible awx_第3张图片

2、创建基于主机ssh-key类型凭证:

在本机对被管理主机执行ssh免密:

ssh-keygen
ssh-copy-id 10.39.140.248
ssh-copy-id 10.39.140.249

获取ssh private key

# cat /root/.ssh/id_rsa

复制private key到awx点击保存即可:
docker安装ansible awx_第4张图片

查看创建的凭证,后续执行job时可直接调用该凭证:
docker安装ansible awx_第5张图片

创建inventory

创建inventory
docker安装ansible awx_第6张图片
在inventory中选择主机,直接使用IP地址添加主机
docker安装ansible awx_第7张图片
或者以别名方式添加主机
docker安装ansible awx_第8张图片
查看添加的主机
docker安装ansible awx_第9张图片
也可以使用导入方式批量添加主机,选择Sources,配置以下信息,注意需要提前添加Projects
docker安装ansible awx_第10张图片
playbooks/hosts示例

[all]
node1 ansible_host=95.54.0.12
node2 ansible_host=95.54.0.13
node3 ansible_host=95.54.0.14
node4 ansible_host=95.54.0.15
node5 ansible_host=95.54.0.16
node6 ansible_host=95.54.0.17

[kube-master]
node1
node2

[etcd]
node1
node2
node3

[kube-node]
node2
node3
node4
node5
node6

[calico-rr]

[k8s-cluster:children]
kube-master
kube-node
calico-rr

创建主机组
docker安装ansible awx_第11张图片
将主机加入组
docker安装ansible awx_第12张图片
勾选2个主机,点击右侧Run Command,选择ping模块,下一步指定ssh-pass或ssh-key,然后点击launch执行命令,等待任务成功执行:
docker安装ansible awx_第13张图片

创建projects

projects定义了一组playbooks的来源,指定了templates执行任务时从哪里引用playbook,常用的有以下几种选择:

  • Manual:awx所在节点的本地目录,默认为/var/lib/awx/projects,您需要将playbooks放在此处
  • Git:指定playbooks所在git仓库,可以是本地gitlab、gogs或远端github等 (推荐的方式)
  • Remote Archive:从远端URL下载归档playbooks文件,你可以将其存在本地minio对象存储或其他文件服务器等。

示例git仓库playbooks:https://github.com/ansible/ansible-examples

您可以参照以上链接的示例仓库组织自己的playbooks项目:

[root@jenkins ansible-examples]# tree -L 2
.
├── jboss-standalone
│   ├── demo-aws-launch.yml
│   ├── deploy-application.yml
│   ├── group_vars
│   ├── hosts
│   ├── LICENSE.md
│   ├── README.md
│   ├── roles
│   └── site.yml
├── lamp_haproxy
│   ├── aws
│   ├── group_vars
│   ├── hosts
│   ├── LICENSE.md
│   ├── provision.yml
│   ├── README.md
│   ├── roles
│   ├── rolling_update.yml
│   └── site.yml
├── lamp_simple
│   ├── group_vars
│   ├── hosts
│   ├── LICENSE.md
│   ├── README.md
│   ├── roles
│   └── site.yml
├── lamp_simple_rhel7
│   ├── group_vars
│   ├── hosts
│   ├── LICENSE.md
│   ├── README.md
│   ├── roles
│   └── site.yml

创建projects,可选的Source Control Credential Type:
docker安装ansible awx_第14张图片
基于docker部署的awx推荐使用git仓库方式:
docker安装ansible awx_第15张图片
点击Sync Project进行同步:
docker安装ansible awx_第16张图片

创建Templates

创建templates以执行playbook任务。

注意,必须提前在awx中定义好与git仓库playbook匹配的inventory:
docker安装ansible awx_第17张图片
运行templates,执行jobs任务
docker安装ansible awx_第18张图片

projects使用本地目录

AWX不推荐引用本地目录的playbooks,建议使用git仓库统一管理playbooks,使用docker部署awx时,如果创建projects想要使用Manual方式运行本地目录的playbook,需要按照以下步骤重新部署awx.

创建本地目录,并将容器中projects复制到本地:

mkdir /var/lib/awx/
docker cp awx_task:/var/lib/awx/projects/ /var/lib/awx/projects/

修改docker-compose.yml ,在web和task容器中挂载相同的卷

# cd /root/.awx/awxcompose/
# vim docker-compose.yml 
  web:
    volumes:
      - /var/lib/awx/projects/:/var/lib/awx/projects/
  task:
    volumes:
      - /var/lib/awx/projects/:/var/lib/awx/projects/

修改inventory配置文件,取消project_data_dir注释

# cd awx-16.0.0/installer/

# cat inventory |grep project_data_dir
project_data_dir=/var/lib/awx/projects

重新部署awx

ansible-playbook -i inventory install.yml

在主机/var/lib/awx/projects目录下创建自己的playbooks项目

[root@jenkins ~]# cat /var/lib/awx/projects/helloworld/helloworld.yml 
---
- name: Hello World!
  hosts: all

  tasks:

  - name: Hello World!
    shell: echo "Hi! Tower is working!"

创建项目选择Manual类型,即可在Playbook Directory选择本地的playbooks执行:
docker安装ansible awx_第19张图片
然后创建templates直接执行即可:
docker安装ansible awx_第20张图片
任务执行完成如下:
docker安装ansible awx_第21张图片

你可能感兴趣的:(devops,ansible)