前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >07 Jan 2024 使用playbook配置awx

07 Jan 2024 使用playbook配置awx

作者头像
俊采
发布2024-01-08 08:53:43
1250
发布2024-01-08 08:53:43
举报
文章被收录于专栏:LEo的网络日志LEo的网络日志

当部署完awx后,一般需要配置awx以运行playbook执行各种自动化任务。参考这篇文章部署awx:http://reborncodinglife.com/2024/01/07/build-automation-system-based-on-awx/

前提条件

需要提前安装以下软件:

  • ansible
  • docker
  • jq

准备vm加入awx

通过以下方式创建2个docker模拟的vm:

代码语言:javascript
复制
docker run -d -p 11111:22 --name vm1 songleo/ubuntu-ssh
docker run -d -p 22222:22 --name vm2 songleo/ubuntu-ssh

你可以在本地通过一下方式验证,登录这个2个vm:

代码语言:javascript
复制
ssh admin@192.168.0.106 -p 11111
ssh admin@192.168.0.106 -p 22222

这个image已经提前设定好用户名和密码,具体参考:http://reborncodinglife.com/2024/01/06/use-container-to-simulate-vm-as-ssh-server/

使用playbook配置awx

克隆仓库,使用playbooks/configure_awx.yml配置organization、project、inventory、machine credential、host和job template,配置好以后就可以运行新建的job template。详细的配置参数请直接查看playbooks/configure_awx.yml。

代码语言:javascript
复制
$ git clone git@github.com:songleo/automation-system.git
$ cd automation-system
$ git checkout 1.0.0
$ export CONTROLLER_HOST="http://www.automation-system.com/awx/"
$ export CONTROLLER_USERNAME="admin"
$ export CONTROLLER_PASSWORD="admin"
$ ansible-playbook playbooks/configure_awx.yml
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [configure awx] *********************************************************************************************************

TASK [create organization] ***************************************************************************************************
changed: [localhost]

TASK [create project] ********************************************************************************************************
changed: [localhost]

TASK [create inventory] ******************************************************************************************************
changed: [localhost]

TASK [create machine credential] *********************************************************************************************
changed: [localhost]

TASK [add a new host to inventory] *******************************************************************************************
changed: [localhost] => (item={'name': 'vm1', 'variables': {'ansible_ssh_host': '192.168.0.106', 'ansible_ssh_port': 11111}})
changed: [localhost] => (item={'name': 'vm2', 'variables': {'ansible_ssh_host': '192.168.0.106', 'ansible_ssh_port': 22222}})

TASK [add a job template to ping host] ***************************************************************************************
changed: [localhost]

PLAY RECAP *******************************************************************************************************************
localhost                  : ok=6    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

最后通过playbook运行新建的job template去ping 2个vm:

代码语言:javascript
复制
$ ansible-playbook playbooks/launch_job.yml
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match
'all'

PLAY [launch job to ping host] ******************************************************************************************

TASK [launch job] *******************************************************************************************************
changed: [localhost]

TASK [wait for the job to finish] ***************************************************************************************
ok: [localhost]

TASK [print the job result] *********************************************************************************************
ok: [localhost] => {
    "job_result": {
        "changed": false,
        "elapsed": 4.665,
        "failed": false,
        "finished": "2024-01-07T03:40:45.066412Z",
        "id": 5,
        "started": "2024-01-07T03:40:40.401628Z",
        "status": "successful"
    }
}

PLAY RECAP **************************************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

可以看到,已经成功启动playbook,你也可以通过awx的api查看这个id为5的作业输出。如下:

代码语言:javascript
复制
$ curl -u admin:admin $CONTROLLER_HOST/api/v2/jobs/5/stdout/?format=txt
SSH password:

PLAY [ping host for testing] ***************************************************

TASK [ping host] ***************************************************************
ok: [vm2]
ok: [vm1]

PLAY RECAP *********************************************************************
vm1                        : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
vm2                        : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

可以看到playbook已经成功运行在vm1和vm2。awx的基本配置完成。

参考

  • https://github.com/songleo/automation-system

LEo at 00:12

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提条件
  • 准备vm加入awx
  • 使用playbook配置awx
  • 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档