使用ansible-galaxy来重用角色

“Ansible Galaxy”是一个可以共享角色的服务。您可以上传角色或者搜索并安装喜欢的角色。ansible-galaxy是用于使用Ansible Galaxy的命令行工具。
在1.8版本的ansible-galaxy中,除了可以使用Ansible Galaxy托管的角色之外,还可以指定SCM来处理外部存储库。

SCM的使用方法

使用GitHub进行配置。通过-p参数指定目录。使用ansible-galaxy在./roles目录中安装来自https://github.com/bennojoy/nginx的模块。

您可以在ansible-galaxy中指定分支和标签进行安装。
命令为:ansible-galaxy install -p ./roles https://github.com/ANXS/mysql.git,v1.0.3

应用

通过在1.8或更高版本中使用-r参数来将文件的扩展名指定为’yml’,可以使得在从文件读取时可以使用外部的存储库。

准备文件

# from galaxy
- src: yatesr.timezone

# from github
- src: https://github.com/bennojoy/nginx

# from github with tag
- src: https://github.com/ANXS/mysql.git
  version: v1.0.3

执行以下操作:
ansible-galaxy 安装 -p ./roles -r requirements.yml

我试着在个人生活中使用一下

我打算使用 Ansible-Galaxy 安装在我个人私人 GitLab 上创建的自定义角色。

你可以使用 “ansible-galaxy init [role名]” 命令来创建一个角色的模板。如果要在离线环境中使用,请同时指定 –offline 选项。

myrole
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
└── vars
    └── main.yml

提交并推送后,尝试使用ansible-galaxy进行安装。

$ ansible-galaxy install -p ./roles git+git@gitlab.example.com:orita/myrole.git
- executing: git clone git@gitlab.example.com:orita/myrole.git myrole
- executing: git archive --prefix=myrole/ --output=/var/folders/xx/xxxxxxxxxxxxxxxxxxxxxx/x/xxxxxxx.tar master
- extracting myrole to ./roles/myrole
- myrole was installed successfully

看起来进展顺利。在使用ssh+git的情况下,如果在仓库路径前面加上”git+”,似乎就可以顺利进行了。

请留意以下事项

ansible-galaxy会自动获取所依赖的角色(在meta/main.yml中指定),但目前仅限于Ansible Galaxy中存在的角色。如果要放在外部存储库中,请小心。

要下载一个带有依赖项并自动安装这些依赖项的角色,必须将该角色上传到Ansible Galaxy网站。Ansible Galaxy – Ansible文档。

“后记”

之前当我自己使用的时候,角色和内容都被放在同一个代码库中,这使得重复使用变得困难(听说过反范式……),尝试使用了git的子模块,但使用起来感觉很不方便。现在可以处理外部代码库,角色的重复使用变得更加顺畅。就像使用Berkshelf一样方便啊。

广告
将在 10 秒后关闭
bannerAds