如何避免ansible-galaxy init创建角色时自动生成.travis.yml文件
.travis.yml自动生成的原因
不少用户会误以为该文件是创建角色后一段时间自动生成的,实际是执行ansible-galaxy init时就随模板生成的:
- 早期Ansible版本本地内置的角色骨架没有包含该文件,init命令默认在联网状态下会拉取Ansible Galaxy站点上的最新官方角色模板创建目录,官方后续更新模板加入了
.travis.yml作为默认CI配置项,因此后续新创建的角色目录中就会出现该文件,很容易被误认为是后期自动生成。 - 该文件的作用是为公开上传到Ansible Galaxy的角色提供开箱即用的Travis CI语法校验能力,文件内的webhook配置用于将CI校验结果同步回Galaxy平台,无Travis CI使用需求的话,该文件不会对角色运行产生任何作用,可直接删除。
默认生成的文件内容如下:
--- language: python python: "2.7" # Use the new container infrastructure sudo: false # Install ansible addons: apt: packages: - python-pip install: # Install ansible - pip install ansible # Check ansible version - ansible --version # Create ansible.cfg with correct roles_path - printf '[defaults]\nroles_path=../' >ansible.cfg script: # Basic role syntax check - ansible-playbook tests/test.yml -i tests/inventory --syntax-check notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/
避免该文件自动生成的方法
根据自身使用场景选择以下任意一种方式即可:
- 单次创建时跳过Travis配置生成:Ansible 2.10及以上版本支持
--no-travis参数,执行初始化命令时直接带上该参数即可不生成.travis.yml,命令格式:ansible-galaxy init --no-travis my_role - 使用离线模式初始化:执行命令时加上
--offline参数,会直接调用Ansible安装包本地内置的角色骨架创建目录,不会拉取线上包含.travis.yml的最新模板,命令格式:ansible-galaxy init --offline my_role - 自定义全局角色骨架(一劳永逸方案):
- 先执行一次
ansible-galaxy init temp_role生成默认角色目录,删掉目录里所有不需要的文件(包括.travis.yml、其他无用模板),调整成常用的角色结构,保存到固定路径比如~/.ansible/custom_role_skeleton - 编辑Ansible配置文件(默认路径为
~/.ansible.cfg),在[galaxy]配置段添加如下内容:[galaxy] role_skeleton = ~/.ansible/custom_role_skeleton role_skeleton_ignore = ["*.travis.yml", ".git", ".gitignore"] - 之后所有通过
ansible-galaxy init创建的角色都会使用自定义模板生成,不会再出现不需要的默认文件。
- 先执行一次
内容的提问来源于stack exchange,提问作者RicHincapie
相关产品推荐
相关产品推荐

