Memo/Ansible/Lookups

https://dexlab.net:443/pukiwiki/index.php?Memo/Ansible/Lookups
 


lookup: ファイルやテンプレートを取り込む

  • Lookups
    • localにあるファイルを読み込み、変数へ展開する。remoteは非対応
  • jinja2テンプレートで変数を展開して取り込む
    - debug: msg="{{ lookup('template', './some_template.j2') }}"

javaのpropertiesを読む

- debug: msg="user.name is {{ lookup('ini', 'user.name type=properties file=user.properties') }}"

iniファイルを読む

  • v2.0以上で対応
  • aws configのdefaultセクションを読む。ただし、「section」に空白が含まれる場合、エラーになる。
    - debug: msg={{ lookup('ini', 'aws_access_key_id section=default file=~/.aws/config') }}
  • パラメータを渡したい場合、formatを使う
    - debug: msg="{{ lookup('ini', 'aws_access_key_id section=%s file=~/.aws/config'|format(section)) }}"

外部ファイルを変数に取り込む

lookup 関数で出来た

  • EC2(VPC)起動時のuser_dataにcloudinitのファイルを設定する
    • ansible 1.7.1で動作確認
    • roles/cloudinit/files/centos6.yml
    • playbook.yml
      - hosts: 127.0.0.1
        gather_facts: False
        vars:
          ec2_user_data: "{{ lookup('file', 'roles/cloudinit/files/centos6.yml') }}"
        tasks:
        - name: ec2 instance
          local_action:
            module: ec2
            keypair: example-key
            group: example-sg
            instance_type: t2.micro
            image: ami-xxxxxxxx
            region: ap-northeast-1
            vpc_subnet_id: subnet-xxxxxxxx
            assign_public_ip: yes
            count: 1
            volumes:
              - device_name: /dev/sda1
                volume_size: 10
      #        - device_name: /dev/sdb # t2インスタンスはephemeral diskは無い
      #          ephemeral: ephemeral0
            instance_tags: '{"Name":"test.example.com","key2":"val2"}'
            user_data: "{{ ec2_user_data }}"
            wait: yes
            wait_timeout: 600

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-18 (火) 19:21:14 (10h)