これは Ansible Advent Calendar 2018 の15日目の記事です。
■ はじめに
2018年、Ansible は 2.5、2.6、2.7 とバージョンアップを重ねてきました。ネットワーク関連では、新規対応プラットフォームやモジュールの追加の他にも、ネットワークモジュール用コネクプラグインの追加といった、アーキテクチャ的なアップデートもありました。
この記事では、ネットワークモジュール周辺のアップデートについて、バージョンごとに振り返ります。
2018/12/06 開催の Ansible Night in Tokyo 2018.12 での発表「5分でふりかえる2018年のネットワークモジュールのアップデート」の詳細版です。
目次
- ■ はじめに
- ■ Ansible 2.5.0 (2018/03/22 リリース)
- ■ Ansible 2.6.0 (2018/06/28 リリース)
- ■ Ansible 2.7.0 (2018/10/04 リリース)
- ■ まとめ(2.5 - 2.7)
■ Ansible 2.5.0 (2018/03/22 リリース)
新規対応プラットフォーム: 7 (計40)
Ansible 2.5.0 では以下の 7 つのプラットフォームに新たに対応しました。FortiManager、NSO といった運用管理系プラットフォームにも対応したことが特徴です。
追加モジュール: 116 (計595)
追加モジュール一覧
クリックすると Ansible 2.5 追加モジュール一覧が表示されます
- aci_aaa_user - Manage AAA users (aaa:User)
- aci_aaa_user_certificate - Manage AAA user certificates (aaa:UserCert)
- aci_access_port_to_interface_policy_leaf_profile - Manage Fabric interface policy leaf profile interface selectors (infra:HPortS, infra:RsAccBaseGrp, infra:PortBlk)
- aci_aep_to_domain - Bind AEPs to Physical or Virtual Domains (infra:RsDomP)
- aci_domain - Manage physical, virtual, bridged, routed or FC domain profiles (phys:DomP, vmm:DomP, l2ext:DomP, l3ext:DomP, fc:DomP)
- aci_domain_to_encap_pool - Bind Domain to Encap Pools (infra:RsVlanNs)
- aci_domain_to_vlan_pool - Bind Domain to VLAN Pools (infra:RsVlanNs)
- aci_encap_pool - Manage encap pools (fvns:VlanInstP, fvns:VxlanInstP, fvns:VsanInstP)
- aci_encap_pool_range - Manage encap ranges assigned to pools (fvns:EncapBlk, fvns:VsanEncapBlk)
- aci_fabric_node - Manage Fabric Node Members (fabric:NodeIdentP)
- aci_firmware_source - Manage firmware image sources (firmware:OSource)
- aci_interface_policy_leaf_policy_group - Manage fabric interface policy leaf policy groups (infra:AccBndlGrp, infra:AccPortGrp)
- aci_interface_policy_leaf_profile - Manage fabric interface policy leaf profiles (infra:AccPortP)
- aci_interface_selector_to_switch_policy_leaf_profile - Bind interface selector profiles to switch policy leaf profiles (infra:RsAccPortP)
- aci_static_binding_to_epg - Bind static paths to EPGs (fv:RsPathAtt)
- aci_switch_leaf_selector - Bind leaf selectors to switch policy leaf profiles (infra:LeafS, infra:NodeBlk, infra:RsAccNodePGrep)
- aci_switch_policy_leaf_profile - Manage switch policy leaf profiles (infra:NodeP)
- aci_switch_policy_vpc_protection_group - Manage switch policy explicit vPC protection groups (fabric:ExplicitGEp, fabric:NodePEp).
- aci_vlan_pool - Manage VLAN pools (fvns:VlanInstP)
- aci_vlan_pool_encap_block - Manage encap blocks assigned to VLAN pools (fvns:EncapBlk)
- avi_api_version - Avi API Version Module
- avi_clusterclouddetails - Module for setup of ClusterCloudDetails Avi RESTful Object
- avi_customipamdnsprofile - Module for setup of CustomIpamDnsProfile Avi RESTful Object
- avi_errorpagebody - Module for setup of ErrorPageBody Avi RESTful Object
- avi_errorpageprofile - Module for setup of ErrorPageProfile Avi RESTful Object
- avi_gslbservice_patch_member - Avi API Module
- avi_wafpolicy - Module for setup of WafPolicy Avi RESTful Object
- avi_wafprofile - Module for setup of WafProfile Avi RESTful Object
- bigip_asm_policy - Manage BIG-IP ASM policies
- bigip_device_connectivity - Manages device IP configuration settings for HA on a BIG-IP
- bigip_device_group - Manage device groups on a BIG-IP
- bigip_device_group_member - Manages members in a device group
- bigip_device_httpd - Manage HTTPD related settings on BIG-IP
- bigip_device_trust - Manage the trust relationships between BIG-IPs
- bigip_firewall_address_list - Manage address lists on BIG-IP AFM
- bigip_firewall_port_list - Manage port lists on BIG-IP AFM
- bigip_gtm_server - Manages F5 BIG-IP GTM servers
- bigip_iapplx_package - Manages Javascript iApp packages on a BIG-IP
- bigip_monitor_http - Manages F5 BIG-IP LTM http monitors
- bigip_monitor_https - Manages F5 BIG-IP LTM https monitors
- bigip_monitor_snmp_dca - Manages BIG-IP SNMP data collecting agent (DCA) monitors
- bigip_monitor_udp - Manages F5 BIG-IP LTM udp monitors
- bigip_partition - Manage BIG-IP partitions
- bigip_policy - Manage general policy configuration on a BIG-IP
- bigip_policy_rule - Manage LTM policy rules on a BIG-IP
- bigip_profile_client_ssl - Manages client SSL profiles on a BIG-IP
- bigip_remote_syslog - Manipulate remote syslog settings on a BIG-IP
- bigip_security_address_list - Manage address lists on BIG-IP AFM
- bigip_security_port_list - Manage port lists on BIG-IP AFM
- bigip_software_update - Manage the software update settings of a BIG-IP
- bigip_ssl_key - Import/Delete SSL keys from BIG-IP
- bigip_static_route - Manipulate static routes on a BIG-IP
- bigip_traffic_group - Manages traffic groups on BIG-IP
- bigip_ucs_fetch - Fetches a UCS file from remote nodes
- bigip_vcmp_guest - Manages vCMP guests on a BIG-IP
- bigip_wait - Wait for a BIG-IP condition before continuing
- bigiq_regkey_license - Manages licenses in a BIG-IQ registration key pool
- bigiq_regkey_pool - Manages registration key pools on BIG-IQ
- edgeos_command - Run one or more commands on EdgeOS devices
- edgeos_config - Manage EdgeOS configuration on remote device
- edgeos_facts - Collect facts from remote devices running EdgeOS
- enos_command - Run arbitrary commands on Lenovo ENOS devices
- enos_config - Manage Lenovo ENOS configuration sections
- enos_facts - Collect facts from remote devices running Lenovo ENOS
- eos_interface - Manage Interface on Arista EOS network devices
- eos_l2_interface - Manage L2 interfaces on Arista EOS network devices.
- eos_l3_interface - Manage L3 interfaces on Arista EOS network devices.
- eos_linkagg - Manage link aggregation groups on Arista EOS network devices
- eos_lldp - Manage LLDP configuration on Arista EOS network devices
- eos_static_route - Manage static IP routes on Arista EOS network devices
- fmgr_script - Add/Edit/Delete and execute scripts
- ios_l2_interface - Manage Layer-2 interface on Cisco IOS devices.
- ios_l3_interface - Manage Layer-3 interfaces on Cisco IOS network devices.
- ios_linkagg - Manage link aggregation groups on Cisco IOS network devices
- ios_lldp - Manage LLDP configuration on Cisco IOS network devices.
- ios_vlan - Manage VLANs on IOS network devices
- iosxr_netconf - Configures NetConf sub-system service on Cisco IOS-XR devices
- ironware_command - Run arbitrary commands on Extreme IronWare devices
- ironware_config - Manage configuration sections on Extreme Ironware devices
- ironware_facts - Collect facts from devices running Extreme Ironware
- junos_l2_interface - Manage Layer-2 interface on Juniper JUNOS network devices
- junos_scp - Transfer files from or to remote devices running Junos
- netact_cm_command - Manage network configuration data in Nokia Core and Radio networks
- nso_action - Executes Cisco NSO actions and verifies output.
- nso_config - Manage Cisco NSO configuration and service synchronization.
- nso_query - Query data from Cisco NSO.
- nso_show - Displays data from Cisco NSO.
- nso_verify - Verifies Cisco NSO configuration.
- nxos_l2_interface - Manage Layer-2 interface on Cisco NXOS devices.
- nxos_l3_interface - Manage L3 interfaces on Cisco NXOS network devices
- nxos_linkagg - Manage link aggregation groups on Cisco NXOS devices.
- nxos_lldp - Manage LLDP configuration on Cisco NXOS network devices.
- onyx_bgp - Configures BGP on Mellanox ONYX network devices
- onyx_command - Run commands on remote devices running Mellanox ONYX
- onyx_config - Manage Mellanox ONYX configuration sections
- onyx_facts - Collect facts from Mellanox ONYX network devices
- onyx_interface - Manage Interfaces on Mellanox ONYX network devices
- onyx_l2_interface - Manage Layer-2 interface on Mellanox ONYX network devices
- onyx_l3_interface - Manage L3 interfaces on Mellanox ONYX network devices
- onyx_linkagg - Manage link aggregation groups on Mellanox ONYX network devices
- onyx_lldp - Manage LLDP configuration on Mellanox ONYX network devices
- onyx_lldp_interface - Manage LLDP interfaces configuration on Mellanox ONYX network devices
- onyx_magp - Manage MAGP protocol on Mellanox ONYX network devices
- onyx_mlag_ipl - Manage IPL (inter-peer link) on Mellanox ONYX network devices
- onyx_mlag_vip - Configures MLAG VIP on Mellanox ONYX network devices
- onyx_ospf - Manage OSPF protocol on Mellanox ONYX network devices
- onyx_pfc_interface - Manage priority flow control on ONYX network devices
- onyx_protocol - Enables/Disables protocols on Mellanox ONYX network devices
- onyx_vlan - Manage VLANs on Mellanox ONYX network devices
- panos_dag_tags - Create tags for DAG's on PAN-OS devices.
- panos_match_rule - Test for match against a security rule on PAN-OS devices or Panorama management console.
- panos_op - execute arbitrary OP commands on PANW devices (e.g. show interface all)
- panos_query_rules - PANOS module that allows search for security rules in PANW NGFW devices.
- vdirect_commit - Commits pending configuration changes on Radware devices
- vdirect_runnable - Runs templates and workflow actions in Radware vDirect server
- vyos_vlan - Manage VLANs on VyOS network devices
プラットフォーム別の追加モジュール数は以下のとおりです。
プラットフォーム名 | 2.7 での追加モジュール数 | 備考 |
---|---|---|
aci | 20 | |
avi | 8 | |
edgeos | 3 | |
enos | 3 | |
eos | 6 | |
f5 | 30 | |
fortimanager | 1 | |
ios | 5 | |
iosxr | 1 | |
ironware | 3 | |
junos | 2 | |
netact | 1 | |
nso | 5 | |
nxos | 4 | |
onyx | 17 | |
panos | 4 | |
radware | 2 | |
vyos | 1 |
なお、Ansible 2.5 時点の全ネットワークモジュールの一覧はこちらです。
コネクションプラグインの導入(network_cli、netconf)
これまでネットワークモジュールは local コネクションプラグインを利用する仕組みでした。2.5.0 では、以下の 2 つのネットワークモジュール用のコネクションプラグインが初めて導入されました。
- network_cli - Use network_cli to run command on network appliances
- netconf - Provides a persistent connection using the netconf protocol
- Juniper Junos
これらのネットワークモジュール用のネクションプラグインを利用することで、以下のような利点があります。
- 各タスクの
provider
オプションに都度認証情報を指定しなくてよい - 特権モードの指定を、サーバー系モジュールと同じく
become
で指定できる(authorize
ではなく)
以下に ios_* モジュールを利用した Playbook のサンプルを、比較のため Ansible 2.4 までの場合と 2.5 からの場合に分けて紹介します。
Ansible 2.4 までの場合
Ansible 2.4 までの場合、このように privider
オプションで認証情報を定義します。
内部で定義するオプション名は authorize
など、ネットワークモジュール固有のものになっています。
--- - hosts: ios1 gather_facts: no connection: local # local コネクションプラグインを利用 vars: # 別途変数定義ファイルに書き出しても良い login: # 認証情報をまとめたディクショナリ(NWモジュール固有) username: user # ユーザー名 password: testpass99 # パスワード authorize: yes # 特権モードへの移行有無 auth_pass: testenable99 # 特権パスワード tasks: - name: get information ios_command: commands: - show running-config provider: "{{ login }}" # 認証情報の指定 - name: set ntp ios_config: lines: - ntp server 10.0.0.123 provider: "{{ login }}" # 認証情報の指定(再)
Ansible 2.5 から
Ansible 2.5 からは privider
オプションの代わりに、サーバー系モジュールと同じような変数( ansible_become
など)を利用できます。
--- - hosts: ios1 gather_facts: no connection: network_cli # network_cli コネクションプラグインを利用 vars: # 別途変数定義ファイルに書き出しても良い ansible_network_os: ios # プラットフォーム名 ansible_user: user # ユーザー名 ansible_password: user01 # パスワード ansible_become: yes # 特権パスワード ansible_become_pass: enable01 # 特権モードへの移行有無 ansible_become_method: enable # 特権モードへの移行コマンド tasks: - name: get information ios_command: # 認証情報の指定は不要 commands: - show running-config - name: set ntp ios_config: # 認証情報の指定は不要 lines: - ntp server 10.0.0.123
なお、プラットフォームと対応するコネクションプラグインは、以下の表にまとまっています。 https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#settings-by-platform
上記の表を確認すると分かるように、現在でも local
コネクションプラグインを利用するプラットフォームもあります。
ネットワーク自動化向けドキュメントの拡充
各モジュールの説明ページだけでは分からなかった、トラブルシューティングやベストプラクティス、プラットフォームごとに利用できるオプションの説明 )などのページが、追加、集約されました。公式ドキュメントとしてまとまったという印象を受けます。
https://docs.ansible.com/ansible/latest/network/index.html
Ansible 2.5 参考情報
Ansible 2.5.0 CHANGELOG
(公式ブログ)COMING SOON: NETWORKING FEATURES IN ANSIBLE 2.5
Ansible 2.5 におけるネットワークモジュールのトピック(正式リリース版)
■ Ansible 2.6.0 (2018/06/28 リリース)
新規対応プラットフォーム: 3 (計43)
Ansible 2.6.0 では以下の 3 つのプラットフォームに新たに対応しました。 Extreme のプラットフォームが徐々に増えてきています。
追加モジュール: 56 (計651)
追加モジュール一覧
クリックすると Ansible 2.6追加モジュール一覧が表示されます
- aci_l3out - Manage Layer 3 Outside (L3Out) objects (l3ext:Out)
- avi_autoscalelaunchconfig - Module for setup of AutoScaleLaunchConfig Avi RESTful Object
- avi_l4policyset - Module for setup of L4PolicySet Avi RESTful Object
- avi_useraccount - Avi UserAccount Module
- bigip_data_group - Manage data groups on a BIG-IP
- bigip_device_license - Manage license installation and activation on BIG-IP devices
- bigip_gtm_global - Manages global GTM settings
- bigip_gtm_monitor_bigip - Manages F5 BIG-IP GTM BIG-IP monitors
- bigip_gtm_monitor_external - Manages external GTM monitors on a BIG-IP
- bigip_gtm_monitor_firepass - Manages F5 BIG-IP GTM FirePass monitors
- bigip_gtm_monitor_http - Manages F5 BIG-IP GTM http monitors
- bigip_gtm_monitor_https - Manages F5 BIG-IP GTM https monitors
- bigip_gtm_monitor_tcp - Manages F5 BIG-IP GTM tcp monitors
- bigip_gtm_monitor_tcp_half_open - Manages F5 BIG-IP GTM tcp half-open monitors
- bigip_gtm_pool_member - Manage GTM pool member settings
- bigip_gtm_virtual_server - Manages F5 BIG-IP GTM virtual servers
- bigip_log_destination - Manages log destinations on a BIG-IP.
- bigip_log_publisher - Manages log publishers on a BIG-IP
- bigip_management_route - Manage system management routes on a BIG-IP
- bigip_monitor_external - Manages external LTM monitors on a BIG-IP
- bigip_profile_dns - Manage DNS profiles on a BIG-IP
- bigip_profile_tcp - Manage TCP profiles on a BIG-IP
- bigip_profile_udp - Manage UDP profiles on a BIG-IP
- bigip_service_policy - Manages service policies on a BIG-IP.
- bigip_smtp - Manages SMTP settings on the BIG-IP
- bigip_snmp_community - Manages SNMP communities on a BIG-IP.
- bigip_timer_policy - Manage timer policies on a BIG-IP
- bigip_trunk - Manage trunks on a BIG-IP
- bigiq_application_fasthttp - Manages BIG-IQ FastHTTP applications
- bigiq_application_fastl4_tcp - Manages BIG-IQ FastL4 TCP applications
- bigiq_application_fastl4_udp - Manages BIG-IQ FastL4 UDP applications
- bigiq_application_http - Manages BIG-IQ HTTP applications
- bigiq_application_https_offload - Manages BIG-IQ HTTPS offload applications
- bigiq_application_https_waf - Manages BIG-IQ HTTPS WAF applications
- bigiq_regkey_license_assignment - Manage regkey license assignment on BIG-IPs from a BIG-IQ
- bigiq_utility_license - Manage utility licenses on a BIG-IQ
- cnos_command - Run arbitrary commands on Lenovo CNOS devices
- cnos_config - Manage Lenovo CNOS configuration sections
- exos_command - Run commands on remote devices running Extreme EXOS
- fortios_webfilter - Configure webfilter capabilities of FortiGate and FortiOS.
- meraki_admin - Manage administrators in the Meraki cloud
- meraki_network - Manage networks in the Meraki cloud
- meraki_organization - Manage organizations in the Meraki cloud
- meraki_snmp - Manage organizations in the Meraki cloud
- net_get - Copy a file from a network device to Ansible Controller
- net_put - Copy a file from Ansible Controller to a network device
- netconf_get - Fetch configuration/state data from NETCONF enabled network devices.
- netconf_rpc - Execute operations on NETCONF enabled network devices.
- slxos_command - Run commands on remote devices running Extreme Networks SLX-OS
- slxos_config - Manage Extreme Networks SLX-OS configuration sections
- slxos_facts - Collect facts from devices running Extreme SLX-OS
- slxos_interface - Manage Interfaces on Extreme SLX-OS network devices
- slxos_l2_interface - Manage Layer-2 interface on Extreme Networks SLX-OS devices.
- slxos_l3_interface - Manage L3 interfaces on Extreme Networks SLX-OS network devices.
- slxos_linkagg - Manage link aggregation groups on Extreme Networks SLX-OS network devices
- slxos_vlan - Manage VLANs on Extreme Networks SLX-OS network devices
プラットフォーム別の追加モジュール数は以下のとおりです。
プラットフォーム名 | 2.6 での追加モジュール数 | 備考 |
---|---|---|
aci | 1 | |
avi | 3 | |
cnos | 2 | |
exos | 1 | |
f5 | 32 | |
files | 2 | ベンダー非依存(後述の net_get 、net_put ) |
fortios | 1 | |
meraki | 4 | |
netconf | 2 | | ベンダー非依存(後述の netconf_rpc 、netconf_get ) |
slxos | 8 |
なお、Ansible 2.6 時点の全ネットワークモジュールの一覧はこちらです。
ベンター非依存モジュール(net_get/net_put/netconf_get/net_rpc)
ベンダー非依存モジュールとして以下の 4 つが追加されています。
- net_get - Copy a file from a network device to Ansible Controller
- net_put - Copy a file from Ansible Controller to a network device
- netconf_get - Fetch configuration/state data from NETCONF enabled network devices.
- netconf_rpc - Execute operations on NETCONF enabled network devices.
net_get
、get_put
は SCP や SFTP でコンフィグを転送するモジュールです。
netconf_get
、netconf_rpc
は NETCONF 対応機器から NETCONF で情報を取得したり処理を実行するモジュールです。
httpapi コネクションプラグインの追加
ネットワークモジュール用のコネクプラグインに httpapi
が追加されました。
HTTP による API に対応しているネットワーク機器と通信するためのコネクションプラグインです。具体的には、Cisco NX-OSと、Arista EOS に利用できます。
HTTPS によるアクセスも可能
デフォルトでは、HTTPS ではなく HTTP です。HTTPS でアクセスしたい場合は、use_ssl
オプション(変数 ansible_httpapi_use_ssl
)を yes
にセットします。
この場合、証明書の検証を必ず行うため注意が必要です。もし、検証を無効にしたい場合は、後述の Ansible 2.7 で追加されるオプション validate_certs
(変数 ansible_httpapi_validate_certs
)を no
にセットします。
ネットワークモジュール用コネクションプラグインならではのメリットが
これまでも、local
コネクションプラグインと各 nxos_*
モジュールの transport: nxapi
や、eos_*
モジュールの transport: eapi
を指定することで、ネットワーク機器に HTTP API によってアクセスできました。
ただし、local
コネクションプラグインを利用する場合、以下のように都度 provider
というオプション経由で認証情報を渡す必要がある、など少々面倒でした。
- name: task1 eos_command: commands: - show version provider: "{{ eapi }}" # 認証情報の指定
そこで、今回追加された httpapi
コネクションプラグインを利用することで、認証情報は ansibe_user
や ansible_password
などの変数で定義するれば良くなり、provider
オプションは不要になります。
このようなメリットは、Ansible 2.5 で導入された network_cli
や netconf
コネクションプラグインを利用するメリットと同様です。
なお、Arista EOS での connettion: local
と connection: httpapi
でも書き方は、公式ドキュメントの EOS Platform Options で確認できます。
Ansible 2.6 参考情報
- Ansible 2.6.0 CHANGELOG
■ Ansible 2.7.0 (2018/10/04 リリース)
新規対応プラットフォーム: 5 (計48)
Ansible 2.7.0 では以下の 5 つのプラットフォームに新たに対応しました。引き続き Extreme のプラットフォームが追加されています。また、私の周辺では「ついに RouterOS に対応」と反応されている方もいらっしゃって、Router Board User's Group Jp のブログでも取り上げられていました。
追加モジュール: 46 (計697)
追加モジュール一覧
クリックすると Ansible 2.7 追加モジュール一覧が表示されます
- aci_interface_policy_ospf - Manage OSPF interface policies (ospf:IfPol)
- bigip_appsvcs_extension - Manage application service deployments
- bigip_cli_alias - Manage CLI aliases on a BIG-IP
- bigip_cli_script - Manage CLI scripts on a BIG-IP
- bigip_device_auth - Manage system authentication on a BIG-IP
- bigip_device_facts - Collect facts from F5 BIG-IP devices
- bigip_firewall_dos_profile - Manage AFM DoS profiles on a BIG-IP
- bigip_firewall_policy - Manage AFM security firewall policies on a BIG-IP
- bigip_firewall_rule - Manage AFM Firewall rules
- bigip_firewall_rule_list - Manage AFM security firewall policies on a BIG-IP
- bigip_monitor_dns - Manage DNS monitors on a BIG-IP
- bigip_profile_http - Manage HTTP profiles on a BIG-IP
- bigip_profile_http_compression - Manage HTTP compression profiles on a BIG-IP
- bigip_profile_oneconnect - Manage OneConnect profiles on a BIG-IP
- bigip_profile_persistence_src_addr - Manage source address persistence profiles
- bigip_remote_role - Manage remote roles on a BIG-IP
- bigip_software_image - Manage software images on a BIG-IP
- bigip_software_install - Install software images on a BIG-IP
- bigip_tunnel - Manage tunnels on a BIG-IP
- bigiq_utility_license_assignment - Manage utility license assignment on BIG-IPs from a BIG-IQ
- cli_command - Run a cli command on cli-based network devices
- cli_config - Push text based configuration to network devices over network_cli
- exos_config - Manage Extreme Networks EXOS configuration sections
- exos_facts - Collect facts from devices running Extreme EXOS
- fmgr_provisioning - Provision devices via FortiMananger
- ftd_configuration - Manages configuration on Cisco FTD devices over REST API
- ftd_file_download - Downloads files from Cisco FTD devices over HTTP(S)
- ftd_file_upload - Uploads files to Cisco FTD devices over HTTP(S)
- meraki_config_template - Manage configuration templates in the Meraki cloud
- meraki_device - Manage devices in the Meraki cloud
- meraki_mr_l3_firewall - Manage MR access point layer 3 firewalls in the Meraki cloud
- meraki_mx_l3_firewall - Manage MX appliance layer 3 firewalls in the Meraki cloud
- meraki_ssid - Manage wireless SSIDs in the Meraki cloud
- meraki_switchport - Manage switchports on a switch in the Meraki cloud
- meraki_vlan - Manage VLANs in the Meraki cloud
- nos_command - Run commands on remote devices running Extreme Networks NOS
- nos_config - Manage Extreme Networks NOS configuration sections
- nos_facts - Collect facts from devices running Extreme NOS
- nxos_rpm - Install patch or feature rpms on Cisco NX-OS devices.
- onyx_igmp - Configures IGMP globl parameters
- opx_cps - CPS operations on networking device running Openswitch (OPX)
- panos_set - Execute arbitrary commands on a PAN-OS device using XPath and element
- routeros_command - Run commands on remote devices running MikroTik RouterOS
- slxos_lldp - Manage LLDP configuration on Extreme Networks SLX-OS network devices.
- voss_command - Run commands on remote devices running Extreme VOSS
- voss_facts - Collect facts from remote devices running Extreme VOSS
プラットフォーム別の追加モジュール数は以下のとおりです。
プラットフォーム名 | 2.7 での追加モジュール数 | 備考 |
---|---|---|
aci | 1 | |
cli | 2 | ベンダー非依存(後述の cli_command 、 `cli) |
exos | 2 | |
f5 | 19 | |
fortimanager | 1 | |
ftd | 3 | |
meraki | 7 | |
nos | 3 | |
nxos | 1 | |
onyx | 1 | |
opx | 1 | |
panos | 1 | |
routeros | 1 | |
slxos | 1 | |
voss | 2 |
なお、Ansible 2.7 時点の全ネットワークモジュールの一覧はこちらです。
ベンター非依存モジュール(cli_command/cli_config)
ベンダー非依存モジュールとして以下の 4 つが追加されています。 - cli_command - Run a cli command on cli-based network devices - cli_config - Push text based configuration to network devices over network_cli
両者とも、コマンドをそのまま指定するタイプのモジュールです。ただし ios_command
モジュールの commands
オプションた、ios_config
の lines
オプションのように、コマンドをリストで指定できません。代わりに改行を含んだ複数コマンドの文字列を指定します。使い勝手が、ベンダー固有の *_command
、*_config
とは異なるので少し注意が必要です。
httpapi コネクションプラグインで証明書の検証有無を指定可能に
Ansible 2.6 で追加された httpapi コネクションプラグインで、SSL/TLS証明書の検証有無を validate_certs
というオプション(変数 ansible_httpapi_use_ssl
)で指定できるようになりました。デフォルトは true
です。
例えば、Arista EOS の API に HTTPS でアクセスし、証明書の検証はしない場合は、以下のような変数定義をします。
- group_vars/eos.yml
ansible_network_os: eos # プラットフォームの指定 ansible_connection: httpapi # httpapi コネクションプラグインを利用 ansible_httpapi_use_ssl: yes # API に HTTPS でアクセスする ansible_httpapi_validate_certs: no # 証明書検証をしない ansible_user: testuser # ログインユーザー名 ansible_password: testpass9999 # ログインパスワード ansible_become: yes # 特権モード移行を有効化 ansible_become_method: enable # 特権モード移行コマンド ansible_become_pass: enable9999 # 特権モード移行パスワード
Ansible 2.7 参考情報
2.7.0 CHANGELOG https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#v2-7-0
【Ansible】Ansible 2.7 リリース、Mikrotik RouterOS などに対応。マルチベンダー対応コマンドモジュールの登場など、ネットワーク対応も強化 https://tekunabe.hatenablog.jp/entry/2018/10/04/ansible_27_nw
■ まとめ(2.5 - 2.7)
大まかにまとめると以下の3点です。
- ネットワークモジュール用のコネクションプラグインの導入
- network_cli、netconf、httpapi
- 15 プラットフォーム追加
- Extreme Networks 系が特に増加
- 218 モジュール追加
- net_get、net_put、cli_* 等ベンダー非依存モジュールも
特に、ネットワークモジュール用のコネクションプラグインの導入については、大きな変化だったと思います。ネット上のサンプルも connection: local
と connection: network_cli
が混在した状態がしばらく続く気がします。(bigip_*
のように、もともと local
のみサポートするプラットフォームもあります)
次期バージョンである Ansible 2.8 (ロードマップ) では、さらに NAPALM コネクションプラグインも追加される予定です。引き続き注目していきたいと思います。
Ansible 2.5 - 2.6 参考情報
- 公式ブログ RED HAT ANSIBLE NETWORK AUTOMATION UPDATES(おもに2.6-2.7)
- 同ブログ記事の日本語翻訳版