ダイナミックインベントリプラグイン


  • Ansibleは様々なダイナミックインベントリプラグインによって動的情報源から在庫情報を引き出すことができます.
  • のうちの1つはAWSNES EC 2プラグインです.そして、標準的なローカル目録を維持しなければならないことなくAWS EC 2 Linuxインスタンスを管理するすばらしい方法です.
  • ここではそれを使用する方法の簡単な例です.
    1 .インストールしてください.
    amazon.aws.aws_ec2 – EC2 inventory source
    注意: AWSNES EC 2で終わるYAML設定ファイルを使用します.(YLL - YAWL)
    セットアップ
    [defaults]
    enable_plugins = aws_ec2
    host_key_checking = False
    pipelining = True
    remote_user = ec2-user
    private_key_file=/pem/key-pem
    
    グループターゲットへのインベントリansible.cfgファイルの作成
    ここのフィルタはタグです:インスタンスの名前と状態(実行中)
    ---
    plugin: aws_ec2
    aws_profile: default
    regions:
      - us-east-1
    filters:
      tag:Name:
        - dev-*
        - share-resource
        - hotfix
      instance-state-name : running
    keyed_groups:
      - prefix: env
        key: tags['env']
      - prefix: dev
        key: tags['ssm']
    
    4 .リストとホストグループをチェックする
    $ ansible-inventory -i my_aws_ec2.yml --list
        "all": {
            "children": [
                "aws_ec2",
                "env_dev",
                "dev_ssm",
                "ungrouped"
            ]
        },
        "aws_ec2": {
            "hosts": [
                "ec2-111-111-111-111.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-112.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-113.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-114.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-115.us-east-1.compute.amazonaws.com",
            ]
        },
        "env_dev": {
            "hosts": [
                "ec2-111-111-111-111.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-112.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-113.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-114.us-east-1.compute.amazonaws.com",
                "ec2-11-111-111-115.us-east-1.compute.amazonaws.com",
            ]
        },
        "dev_ssm": {
            "hosts": [
                "ec2-111-111-111-111.us-east-1.compute.amazonaws.com"
            ]
        }
    
    5 .タスクを予期したグループに送信する
    ここでの課題はenvファイルを更新してdevグループをenvoundすることです.ファイル名と値は、有効なホストと項目リスト(ファイルへのAnsible echo)から解析されますmy_aws_ec2.yml
    ---
    - hosts: all
      become: yes
      tasks:
        - name: Get hostname
          command: echo {{ ansible_hostname.split('-')[1] }}
          register: hostname
    
        - name: Update env files
          become: yes
          become_user: root
          shell: |
            echo "AGENT_ID={{ hostname.stdout }}-{{ item }}::" >> "/opt/workdir/{{ item }}.env"
          with_items:
            - app
            - pet
            - gate
            - api
          tags: runcmd
          register: result
    
        - name: Print output
          debug:
            var: result
    
    ラン
    $ ansible-playbook update_env.yaml -i my_aws_ec2.yml --limit env_dev -vv