Ansible收藏的简单使用方法
Contents
-
- 1. はじめに
-
- 2. 仮想環境作成
-
- 3. ansibleのインストール方法
-
- 4. collectionsのインストール方法
-
- 5. collectionsの使用方法
-
- 6. collectionsのパス
-
- 7. おわりに
-
- 8. 参考資料
- 9. 技術情報
首先
ansible2.10不同于ansible2.9,引入了新的概念“collections”。通过使用collections,可以在不更改ansible版本的情况下管理模块的版本。此外,本文以使用“vmware” collection进行验证为例。
2. 创建虚拟环境
[root@localhost ~]# python3 -m venv venv
[root@localhost ~]# source venv/bin/activate
(venv) [root@localhost ~]#
### 仮想環境から抜ける場合は以下コマンド ###
(venv) [root@localhost ~]# deactivate
[root@localhost ~]#
3. Ansible 的安装方法
(venv) [root@localhost ~]# pip install --upgrade pip
(venv) [root@localhost ~]# pip install ansible
(venv) [root@localhost ~]# pip freeze
ansible==2.10.6
ansible-base==2.10.5
过去,显示格式通常是类似于”ansible==2.9.10″,但是从ansible2.10开始,将安装”ansible”和”ansible-base”。
“ansible-base”包含基本功能和标准模块集合,而”ansible”是collection集合。
可以使用ansible命令来检查版本,但是在pip包中,版本似乎与”ansible-base”相同。
即使只安装了”ansible”,但如果没有安装”ansible-base”,将无法使用ansible命令。
此外,如果只安装了”ansible-base”,由于缺少collections,无法引用模块,导致执行playbook时出现错误。
4. 安装 collections 的方法
在进行模块更新或单独安装collections时执行。
### 最新のcollection インストール方法 ###
(venv) [root@localhost ~]# ansible-galaxy collection install community.vmware
### バージョン指定インストール方法 ###
(venv) [root@localhost ~]# ansible-galaxy collection install community.vmware:1.4.0
### 既にcollectionがインストール済みの状態でバージョンを変更する場合 ###
(venv) [root@localhost ~]# ansible-galaxy collection install -f community.vmware:1.5.0
### collectionsの確認 ###
(venv) [root@localhost ~]# ansible-galaxy collection list
# /root/.ansible/collections/ansible_collections
Collection Version
---------------- -------
community.vmware 1.4.0
# /root/venv/lib/python3.6/site-packages/ansible_collections
Collection Version
------------------------- -------
community.vmware 1.7.0
5. 使用 collection 的方式
为了使用模块,可以在 Playbook、roles 和 tasks 中进行指定。
如果要使用角色,则在 meta 中进行指定即可。
### プレイブックで指定する場合 ###
---
- name: sample
hosts: vcenter
gather_facts: no
collections:
- community.vmware
tasks:
- name: sample name
vmware_guest:
### ロールで指定する場合 ###
.
|-- roles
| `-- test
| |-- meta
| | `-- main.yml
| `-- tasks
| |-- main.yml
| `-- test.yml
`-- site.yml
(venv) [root@localhost meta]# pwd
/etc/ansible/playbook/roles/test/meta
(venv) [root@localhost meta]# cat main.yml
---
collections:
- community.vmware
(venv) [root@localhost meta]# cat ../tasks/test.yml
---
- name: sample name
vmware_guest:
### タスクで指定する場合 ###
---
- name: sample
hosts: vcenter
gather_facts: no
tasks:
- name: sample name
community.vmware.vmware_guest:
另外,即使没有指定,也可以执行Playbook。似乎在运行时会重定向到模块路径,从而实现可执行的机制。因此,传统的Playbook现在可以在ansible2.10中执行。
### collections指定なしの場合 ###
---
- name: sample
hosts: vcenter
gather_facts: no
tasks:
- name: sample name
vmware_guest:
6. 集合路徑的位置
查看ansible.cfg后,发现以下内容:
默认情况下,ansible-galaxy命令等会优先使用单独安装的集合(~/.ansible/collections)。
### デフォルトのcollections_paths###
# collections_paths = ~/.ansible/collections:/usr/share/ansible/collections
7. 最后
由于尚未涉及到ansible2.10的发布,我根据参考资料进行了验证和总结。
如果想了解更详细的内容,请查阅参考资料。
8. 参考资料
– 参考文献
– 资料来源
– 引用资源
– 参考来源
– 相关资料
请提供以下链接的中文翻译,只需提供一种选项:
https://docs.ansible.com/ansible/latest/user_guide/collections_using.html
9. 技术信息
我们在公司的网站上发布了技术博客,请您浏览一下,不胜感激。