使用Ansible 2.4创建GitLab项目时遇delegate_to执行问题
我明白你遇到的问题了——把创建GitLab项目的任务委托到localhost执行,但本地没装gitlab_project模块需要的依赖,导致任务跑不起来对吧?别担心,这是个很常见的问题,我给你几个可行的解决办法:
方法1:先在localhost自动安装依赖
gitlab_project模块底层依赖python-gitlab(Python 2环境)或者python3-gitlab(Python 3环境)这个库来和GitLab的API交互,所以咱们可以先让Ansible帮你在localhost装好这个依赖,再执行创建项目的任务。
给你写个完整的Playbook示例:
- name: 确保localhost安装GitLab模块所需依赖 become: yes pip: name: python-gitlab state: present delegate_to: localhost - name: 创建GitLab项目并配置相关功能 gitlab_project: server_url: https://gitlab.com validate_certs: True login_token: 9YmtcDSuFDo11A6DWxB7 name: '{{longname}}' state: present issues_enabled: True wiki_enabled: True snippets_enabled: False delegate_to: localhost
如果你的localhost用的是Debian/Ubuntu这类系统,习惯用系统包管理器的话,也可以换成apt模块来安装:
- name: 用apt安装python-gitlab依赖 become: yes apt: name: python-gitlab state: present update_cache: yes delegate_to: localhost
方法2:调整任务执行节点(不推荐,除非必要)
如果你的远程目标节点已经提前装好了python-gitlab依赖,并且能正常访问GitLab的API地址,那也可以去掉delegate_to: localhost这一行,让任务在远程节点上执行。不过说实话,创建GitLab项目这种操作,在本地发起API请求会更合理,所以这个方法只适合特殊场景。
小提醒
因为你用的是Ansible 2.4这个比较老的版本,记得安装对应版本的python-gitlab哦——一般来说,Ansible 2.4需要python-gitlab >= 1.5.0,如果安装最新版本出现兼容性问题,可以指定版本号,比如name: python-gitlab==1.13.0。
内容的提问来源于stack exchange,提问作者Juliatzin
相关产品推荐
相关产品推荐

