2016-04-13 8 views
0

これについて前に説明したことがある場合、またはこのトピックのどこかにドキュメントがある場合は申し訳ありませんが、どこでもこれを行う方法を見つけることができませんでした。可能性:すべてのタスクにデフォルト変数を使用

私は、毎回指定することなしに、プレイブック内のすべてのタスクにホスト変数を使用する方法を見つけるのが難しいです。私は、可能なローカル接続を使用して、RouterOSデバイスのトラフAPIを設定するためのいくつかのモジュールに取り組んでいます。タスクが実行されるたびに、デバイスのIPアドレス、ユーザー名、およびパスワードを提供する必要があります。

私のhostsファイルは次のようになります。あなたが見ることができるようにするたびに脚本が過度に見えるのホスト名、ユーザ名とパスワードを指定して、

- name: Mikrotik TEST 
    hosts: all 
    connection: local 
    gather_facts: no 
    vars: 
    dhcp_pool: testpool 
    tasks: 
    - name: DNS Setup 
    mt_dns: username={{username}} hostname={{hostname}} password={{password}} servers=192.168.1.1,8.8.8.8 remote_requests="true" 
    - name: IP address setup 
    mt_ip: username={{username}} hostname={{hostname}} password={{password}} address={{et2addr}} interface=ether2 disabled="false" 
    - name: DHCP Pool Setup 
    mt_ip_pool: username={{username}} hostname={{hostname}} password={{password}} pool_name={{dhcp_pool}} pool_range=192.168.116.10-192.168.116.20 
    - name: DHCP Server Setup 
    mt_dhcp_srv: username={{username}} hostname={{hostname}} password={{password}} name=TestServer address_pool={{dhcp_pool}} disabled="true" interface=ether1 
    - name: DHCP Options Setup 
    mt_dhcp_net: username={{username}} hostname={{hostname}} password={{password}} network_address=192.168.116.0/24 gateway=192.168.116.1 dns_server=192.168.116.1 
    - name: Set static route 
    mt_static_route: username={{username}} hostname={{hostname}} password={{password}} dst_address=192.168.10.0/24 gateway=192.168.10.1 
    - name: Source NAT 
    mt_nat: username={{username}} hostname={{hostname}} password={{password}} chain=dstnat action=dst-nat dst_port=8022 to_addresses=192.168.116.20 to_ports=22 protocol=tcp 

[routers] 
mikrotik hostname=192.168.1.100 username=admin password=password123 dns_servers=192.168.1.1,8.8.8.8 
[virtual] 
virtual1 hostname=192.168.116.100 username=admin password=somepass dns_servers=192.168.116.1 gw_address=192.168.116.100/24 
virtual2 hostname=192.168.116.110 username=admin password=somepass2 dns_servers=192.168.116.1 gw_address=192.168.116.110/24 

私の脚本は、このようになります。複雑です。すべてのタスクの変数を事前定義する方法はありますか?私は初心者だし、これを行う方法があると信じているだけで、私はそれを見つけることができませんでした。

ありがとうございます。

+0

変数がパラメータとどのように並んでいるのか、おそらくわかりますか?モジュール上のいくつかのパラメータと同じ名前の変数があったにもかかわらず、そのパラメータをまったく使用しようとしなかった場合にはどうなりますか?したがって、使用するすべてのパラメータを常に指定する必要があります。 – ydaetskcoR

+0

これを実現する方法はまったくありませんか?私はモジュールレベルの回避策を作成しようとしていました。これは、ホストファイルを通過し、そこからクレデンシャルを使用する機能を作成することによって行われました。しかし、モジュールが実行しているホストを特定できないという事実に悩まされました。私は1つの解決策は、3つの代わりに1つの変数を作るparametrとしてホスト名を使用するかもしれないと思う...または多分接続プラグインを作成するが、私はプログラミングスキルから遠くになる恐れがあります。 –

+0

これらの設定をデフォルト値で実行するロールを作成して、上書きしたいものだけを上書きすることができます – user2599522

答えて

0

グローバル変数/デフォルト変数playbook を使用する必要があります。また、定義変数in such mannerを使用する場合は、use inventoryを指定してください。

mikrotik -l ansible-脚本-i /は$ HOME /在庫....

/は$ HOME /在庫:ファイル内

[routers] 
mikrotik hostname=192.168.1.100 username=admin password=password123 dns_servers=192.168.1.1,8.8.8.8 
[virtual] 
virtual1 hostname=192.168.116.100 username=admin password=somepass dns_servers=192.168.116.1 gw_address=192.168.116.100/24 
virtual2 hostname=192.168.116.110 username=admin password=somepass2 dns_servers=192.168.116.1 gw_address=192.168.116.110/24 

また、あなたがすべきprovide the variables through -e

として、 Anonymous 1.3の場合、@構文を使用してJSONファイルから追加のvarsをロードすることができます。

--extra-vars "@some_file.json" 

また、1.3のように、余分な変数は、上記のようにコマンドラインまたはファイルのいずれかでYAMLとしてフォーマットすることができます。

関連する問題