Ansible、Ansible Tower:操作Pan-OS
一、安装
1、控制节点中pip安装依赖:
Ansible可以直接pip install
- pan-pyhton
- pydevice
- xmltodict
Ansible Tower 涉及到虚拟环境的问题,应该把相应的虚拟PIP库装进对应模板的虚拟环境中
sudo /var/lib/awx/venv/ansible/bin/pip install pan-pyhton
2、Ansible安装Pan-OS角色或者是集合
ansible-galaxy install PaloAltoNetworks.paloaltonetworks
ansible-galaxy collection install paloaltonetworks.panos
Ansible Tower 安装集合需要把集合放在项目目录里
如果项目文件是在/var/lib/awx/projects/XXX
那么安装集合或者集合的时候的时候就应该这样做
ansible-galaxy collection install paloaltonetworks.panos -p /var/lib/awx/projects/XXX
这样才能正常调用集合
二、如何使用
1、引用Ansible角色或者是集合
roles:
- role: PaloAltoNetworks.paloaltonetworks
collections:
- paloaltonetworks.panos
2、模块的使用模块参考
模块有点多,这里可以参考一下官方文档:官方文档
或者在tower节点查找panos不需要角色或者是集合的模块
ansible-doc -l | grep panos
3、在使用PANOS系列模块可能会遇到的问题
3.1、关于新版
模块主机清单构建的问题
pnos_xx的变量和一般的主机清单变量不同,你需要在主机清单中加入以下字典
变量
provider: {
ip_address: 1.2.3.4,
username: admin,
password: 123456,
port: 443
}
主机清单引用
举个例:
- name: show list of all interfaces
panos_op:
provider: '{{provider}}'
cmd: 'show interfaces all'
3.2、关于旧版
模块主机清单构建的问题
pnos_xx旧版的的变量和一般的主机清单变量不同,你需要在主机清单中加入以下字符串
变量
ip_address: 1.2.3.4,
username: admin,
password: 123456,
port: 443
主机清单引用久不再是引用provider字典了,直接在变量中留空就行了。在任务执行时他会自动检索这些主机清单变量
ip_address
username
password
port
举个例:
- name: show list of all interfaces
panos_op:
3.3、关于Ansible Tower 操作PanOS 主机清单、剧本、主机清单的关系
凭证
因为Ansible 官方没有Network_os参数为PANOS的 网络系统。
所以选择凭证的时候可以选择Network
类型,但是剧本在调用凭证的时候是类似欺骗的方式调取ANSIBLE_NET_USERNAME
和ANSIBLE_NET_PASSWORD
两个变量。
主机清单
主机清单需要声明每台PA的IP地址
剧本
Ansible Tower 在剧本中想要调用NETWORK凭证中的参数,需要local连接,并且需要开启本地的gather_facts
gather_facts: yes
connection: local
这样才能正确的获取到ANSIBLE_NET_USERNAME
和ANSIBLE_NET_PASSWORD
两个变量
最后剧本的任务可以这样去调用
- name: Information collecting | Get the system resources | PA
panos_op:
ip_address: "{{ip}}"
username: "{{ansible_env.ANSIBLE_NET_USERNAME}}"
password: "{{ansible_env.ANSIBLE_NET_PASSWORD}}"
cmd: 'show system resources'