カットの下の詳細。
設置
Centosへのインストールは非常に簡単です。
yun install ansible
次に、JuniperからAnsibleのモジュールをインストールする必要があります。ここでは、Juniperチームに感謝します。
ansible-galaxy install Juniper.junos
コマンドでインストールされたモジュールを確認できます。
ansible-galaxy list
インストール後、バージョンを確認できます
ansible --version ansible 2.3.1.0 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides python version = 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
ansible.cfg構成ファイルは、ログファイルへのパスとデバイスのリスト、およびスイッチに接続されたときにローカルストレージでSSHキーチェックを無効にするオプションを定義します。
[defaults] inventory = /etc/ansible/hosts host_key_checking = False log_path = /var/log/ansible.log
デバイスのリストは、 hostsファイルにあります 。 ホストはグループ化でき、グループは他のグループのメンバーにすることができます。
[testswitches] #SWTEST 192.168.8.192 #SWAC_0901 192.168.8.218 [prodswitches] #SWAC_1301 192.168.8.81 #SWAC_1302 192.168.8.82 [allswitches:children] testswitches prodswitches
スイッチ構成の変更
Ansible Playbook -Ansibleが特定のアクションを実行するシナリオを作成する必要があります。 スイッチ構成を変更する最初のプレイブックはchangeconfig.ymlです。 yml拡張子を持つ空のファイルを作成するだけです:
#playbook --- --- # - name: Juniper Config Changes # , playbook hosts: testswitches #, - Juniper, roles: - Juniper.junos connection: local gather_facts: no # Python, vars: ansible_python_interpreter: /usr/bin/python # , playbook vars_prompt: - name: USERNAME prompt: Username private: no - name: PASSWORD prompt: Password private: yes # , #timeout 120 , commit EX2200 , tasks: - name: Retrieve information from devices running Junos OS junos_config: host: "{{ inventory_hostname }}" username: "{{ USERNAME }}" password: "{{ PASSWORD }}" timeout: 120 port: 22 # , lines: - delete interfaces vme unit 0 family inet dhcp - set vlans vlan10 description "TestVlan" - set vlans vlan10 vlan-id 10
ansible-playbook changeconfig.ymlコマンドでプレイブックを実行します
Username: admin Password: PLAY [Juniper Config Changes] ********************************************** TASK [Retrieve information from devices running Junos OS] ok: [192.168.8.218] changed: [192.168.8.192] PLAY RECAP ****************************************************** 192.168.8.192 : ok=1 changed=1 unreachable=0 failed=0 192.168.8.218 : ok=1 changed=0 unreachable=0 failed=0
出力を少しクリーンアップしましたが、全体的に、接続が成功したこと、変更された= 1-スイッチに変更が加えられたことを示しています。 192.168.8.218では、目的のVLANはすでに
開始する前に、どのような変更が行われるかを正確にテストできます。 これを行うには、 ansible-playbookパラメーターchangeconfig.yml -bDCを指定してコマンドを実行します
変更はログに表示されますが、実際には変更は適用されません。キーCを使用すると確認でき、 bDには違いが表示されます。 次の例では、スイッチの1つがvlan 10に対してSRVという名前で記述されており、ansibleはそれを削除して新しいスイッチを追加し、vlan自体も作成します。
* [edit vlans vlan10] - description SRV; + description "TestVlan"; + vlan-id 10; changed: [192.168.8.192] ok: [192.168.8.218]
スイッチからの情報収集
別のPlaybookは、スイッチから必要なデータを収集し、結果をローカルファイルに保存する方法を示しています。 Junosバージョンに興味がありました。 以下では、タスクの一部のみを示します。上記のすべては前のプレイブックに似ています
tasks: - name: Retrieve information from devices running Junos OS junos_command: host: "{{ inventory_hostname }}" username: "{{ USERNAME }}" password: "{{ PASSWORD }}" timeout: 120 port: 22 commands: - show version # , , register: printout - name: Save Output #debug: msg="{{printout.stdout_lines}}" lineinfile: path: versions.log create: yes line: "{{printout.stdout_lines}}"
デバッグのために、コマンドansible-playbook -vvv getversion.ymlでプレイブックを実行できます
また、すべてのログは構成で指定された/var/log/ansible.logにあります。
一般的に、私はAnsibleが好きでした、私は学び続けます、あなたの注意をありがとう。