28356


Ansible で記述を行っていく中で、例えば自身の IP
アドレスをサーバー設定ファイルに記述したくなったとします。これはどうやったら実現できるでしょうか。

特に、 ssh に利用したホスト(のIP)を ansible
は知ることができるはずなので、それを変数として利用する方法がないかどうか知りたいと思っています。


CC BY-SA 3.0
2016-08-18T10:18:37.757
28353
2016-08-18T12:17:39.800
754
question
ansible
Ansible で、 ssh に利用している IP アドレスを変数として利用したい


[Variables — Ansible
Documentation](http://docs.ansible.com/ansible/playbooks_variables.html#accessing-
complex-variable-data)

こちらに書いてますが `{{ foo }}` という書式で変数にアクセスできます。  
IPアドレスを表す変数は [FAQ](http://docs.ansible.com/ansible/faq.html#how-do-i-see-a-
list-of-all-of-the-ansible-variables) によると `ansible -m setup hostname`
で調べることが出来ます。

試しに実行してみましたら次のように表示されました。

[code]

    $ ansible -m setup localhost
    localhost | SUCCESS => {
        "ansible_facts": {
           (略)
            "ansible_eth0": {
                "active": true,
                "device": "eth0",
                "ipv4": {
                    "address": "10.0.2.15",
                    "broadcast": "10.0.2.255",
                    "netmask": "255.255.255.0",
                    "network": "10.0.2.0"
                },
                "ipv6": [
                    {
                        "address": "fe80::a00:27ff:fef5:dcf9",
                        "prefix": "64",
                        "scope": "link"
                    }
                ],
                "macaddress": "08:00:27:f5:dc:f9",
                "module": "pcnet32",
                "mtu": 1500,
                "pciid": "0000:00:03.0",
                "promisc": false,
                "type": "ether"
            },
            (略)
    
[/code]

これを参照するには `{{ ansible_eth0["ipv4"]["address"] }}` または `{{
ansible_eth0.ipv4.address }}` と書きます。


CC BY-SA 3.0
2016-08-18T12:17:39.800
28356
2016-08-18T12:17:39.800
5008
28353
answer