Ansible
使用 Ansible 2.12 通過 host: 標籤類訪問 AWS EC2
在我的本地硬體上,我有一個執行 Ubuntu 20 的 Vagrant 盒子,我正在使用 Ansible 2.12.2
我能夠訪問 AWS,甚至可以在 VPN 中創建 EC2 實例。
當我查看庫存時,我可以看到 EC2 伺服器為:
"ec2-64-135-69-12.us-west-1.compute.amazonaws.com": { ..., "tags": { "Details": "File server and api", "Name": "File server via Ansible", "OS": "Ubuntu20", "Type": "Image Server", "class": "classfileserver2022" }, ... },
在我的下一個劇本中,我可以通過以下方式訪問伺服器
hosts: "ec2-64-135-69-12.us-west-1.compute.amazonaws.com"
但我更願意通過上面 json 中的任何標籤來訪問它。
我努力了
hosts: "tags_class_classfileserver2022"
和
hosts: - tags:Class="classfileserver2022"
但我收到類似的錯誤
[WARNING]: Could not match supplied host pattern, ignoring: tags_class_classfileserver2022 skipping: no hosts matched
如何使用類標籤訪問 EC2 主機?(或任何其他標籤..)
我的劇本如下:
--- - name: "Prepare base of {{ server_name }} box" vars_files: - vars/0000_vars.yml - vars/vars_for_base_provision.yml - vars/vars_for_geerling.security.yml # hosts: "ec2-54-153-39-10.us-west-1.compute.amazonaws.com" <-- this works hosts: "tags_Class_{{ tag_class }}" remote_user: ubuntu become: yes gather_facts: no pre_tasks: - name: Check for single host fail: msg="Single host check failed. Try --limit or change `hosts` above." when: "{{ ansible_play_batch|length }} != 1" roles: - { role: geerlingguy.security }
考慮閱讀ansible 文件中的“庫存外掛”部分。
要開始使用帶有 YAML 配置源的清單外掛,請使用為相關外掛記錄的可接受文件名架構創建一個文件,然後添加外掛:plugin_name。如果外掛在集合中,請使用完全限定名稱。
# demo.aws_ec2.yml plugin: amazon.aws.aws_ec2
$$ … $$ 您可以使用帶有構造的 keyed_groups 選項的主機變數創建動態組。選項組也可用於創建組和組合創建和修改主機變數。這是一個利用構造特徵的 aws_ec2 範例:
# demo.aws_ec2.yml plugin: amazon.aws.aws_ec2 regions: - us-east-1 - us-east-2 keyed_groups: # add hosts to tag_Name_value groups for each aws_ec2 host's tags.Name variable - key: tags.Name prefix: tag_Name_ separator: "" groups: # add hosts to the group development if any of the dictionary's keys or values is the word 'devel' development: "'devel' in (tags|list)" compose: # set the ansible_host variable to connect with the private IP address without changing the hostname ansible_host: private_ip_address
$$ … $$您可以使用
ansible-doc -t inventory -l
查看可用外掛的列表。用於ansible-doc -t inventory <plugin name>
查看特定於外掛的文件和範例。