在OpenShift集群的AWX中执行Ansible export模块遇连接问题求助
解决OpenShift Operator部署AWX的资产导出问题
针对你遇到的localhost:443连接被拒和Worker Node无法SSH问题,不需要直接连接Worker Node,推荐以下两种更高效的导出方案:
方案一:通过AWX Route直接访问API导出(推荐)
用Operator部署的AWX会自动创建Route暴露服务,直接通过Route地址访问AWX API即可完成导出,无需远程连接节点:
获取AWX的Route地址
在OpenShift终端执行命令:oc get route -n <你的AWX命名空间> awx -o jsonpath='{.spec.host}'得到类似
awx-myawx.apps.cluster.example.com的地址。修改Playbook
将Playbook的目标主机改为本地(localhost),直接在控制节点调用AWX API:- name: 导出AWX模板和项目 hosts: localhost connection: local tasks: - name: 导出指定资产 awx.awx.export: job_templates: 'my_template' credentials: 'all' projects: 'all' all: True validate_certs: false controller_host: 'https://<上面获取的Route地址>' controller_oauthtoken: '<你的AWX OAuth Token>' register: export_output - name: 保存导出文件到本地 copy: content: "{{ export_output['assets'] }}" dest: ./awx_export.json注意:OAuth Token和用户名密码二选一即可,无需同时填写。
执行Playbook
直接在控制节点运行:ansible-playbook export.yml
方案二:在AWX Task Pod内部执行导出(适合无外部Route访问场景)
如果AWX未暴露外部Route,可直接在AWX的Task Pod内执行导出操作:
进入AWX Task Pod
oc rsh -n <你的AWX命名空间> deployment/awx-task安装依赖(若未预装)
pip install ansible ansible-core ansible-galaxy collection install awx.awx创建并执行导出Playbook
在Pod内创建Playbook文件,将controller_host设为Pod内部可访问的Service地址:- name: 导出AWX资产 hosts: localhost connection: local tasks: - name: 导出指定资产 awx.awx.export: job_templates: 'my_template' credentials: 'all' projects: 'all' all: True validate_certs: false controller_host: 'https://awx-web:8052' controller_username: 'admin' controller_password: '<你的管理员密码>' register: export_output - name: 保存导出文件 copy: content: "{{ export_output['assets'] }}" dest: /tmp/awx_export.json执行Playbook:
ansible-playbook export.yml将导出文件拷贝到外部
打开新终端,执行拷贝命令:oc cp <你的AWX命名空间>/<awx-task-pod名称>:/tmp/awx_export.json ./awx_export.json
内容的提问来源于stack exchange,提问作者Rishi S
相关产品推荐
相关产品推荐

