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时执行。

WS000002.png
### 最新の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. 技术信息

我们在公司的网站上发布了技术博客,请您浏览一下,不胜感激。

广告
将在 10 秒后关闭
bannerAds