我想在家中建立一个可以运行Ansible的【VMware ESXi】环境 ~第2章:引入Ansible和vMX~
首先
由于上次ubuntu服务器可以通过DNS解析,所以这次我将创建以下结构。我想要做的是:
1. 构建vMX(如下图中浅红色)
2. 从ubuntu服务器连接到vMX的SSH
3. 在ubuntu服务器上安装Ansible
4. 创建执行Ansible所需的文件
5. 执行Ansible并获取vMX的show命令
另外,ubuntu的版本是18.04.3。
1. 创建VMX
在构建过程中,我们参考了以下网站:
在VMware ESXi上运行Juniper vMX
尝试在ESXi上构建vMX作为学习环境!
最低硬件和软件要求
以root用户连接到ubuntu服务器,再通过SSH连接至vMX。
我将在vMX中进行以下设置。设置内容如下:
(1)启用SSH,并创建用于执行Ansible的用户。
(2)将地址(192.168.0.202/24)分配给管理接口fxp0。
(3)禁用DHCP设置。
※由于fxp0上启用了DHCP,我将使用“delete interface fxp0”命令删除该设置。
set system root-authentication plain-text-password
set system services ssh
set system login user ansible class super-user
set system login user ansible authentication plain-text-password
deactivate system processes dhcp-service
delete interface fxp0 # DHCP関連の設定を削除
set interfaces fxp0 unit 0 family inet address 192.168.0.202/24
如果能在vMX上进行设置,我们可以登录到Ubuntu服务器并进行SSH连接进行确认!首先,我们通过ping命令进行连通性检查,然后尝试使用SSH登录。一旦SSH功能正常,Ansible环境的建立就只剩下最后一步了!
test@ubuntu201:~/ansible$
test@ubuntu201:~/ansible$ ping 192.168.0.202 # pingを実行
PING 192.168.0.202 (192.168.0.202) 56(84) bytes of data.
64 bytes from 192.168.0.202: icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from 192.168.0.202: icmp_seq=2 ttl=64 time=0.108 ms
64 bytes from 192.168.0.202: icmp_seq=3 ttl=64 time=0.083 ms
--- 192.168.0.202 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2055ms
rtt min/avg/max/mdev = 0.061/0.084/0.108/0.019 ms
test@ubuntu201:~/ansible$
test@ubuntu201:~/ansible$ ssh ansible@192.168.0.202 # SSHログインを実行
~中略~
--- JUNOS 18.2R1.9 Kernel 64-bit JNPR-11.0-20180614.6c3f819_buil # ログイン完了
ansible>
在Ubuntu服务器上安装Ansible。
首先,在Ubuntu服务器上安装Ansible。在Ubuntu服务器上输入以下命令。
sudo apt update
sudo apt-get install software-properties-common # aptだと上手くいかなかった
sudo apt-add-repository ppa:ansible/ansible
sudo apt update
sudo apt install ansible
安装完成后,让我们确认一下是否已安装Ansible。
test@ubuntu201:~/ansible$ ansible --version
ansible 2.9.13
config file = /home/test/ansible/ansible.cfg
configured module search path = [u'/home/test/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.17 (default, Jul 20 2020, 15:37:01) [GCC 7.5.0]
test@ubuntu201:~/ansible$
创建执行Ansible所需文件。
我们现在开始创建Ansible所需的以下3个文件:
(1)ansible.cfg:记录Ansible的配置
(2)虚拟机清单(hosts):记录操作目标主机和每个主机使用的变量等信息的文件
(3)playbook(get-int.yml):记录Ansible执行的任务内容的文件
(1) 跳板机配置文件。
[defaults]
host_key_checking = False
timeout = 60
remote_port = 22
由于python2的支持已经结束,所以在“ansible_python_interpreter=/usr/bin/python3”的部分中进行设置,以便使用python3。
[all:vars]
ansible_python_interpreter=/usr/bin/python3 # python3を使用
[junos]
junos_router_1 ansible_ssh_host=192.168.0.202
[junos:vars]
ansible_connection=network_cli
ansible_network_os=junos
ansible_user=ansible # vMXにログインするユーザ
ansible_ssh_pass=password
(3)玩法书(get-int.yml)
---
- name: show TEST
hosts: junos
gather_facts: no
tasks:
- name: get show
junos_command:
commands: show interfaces fxp0 terse
register: results
- name: debug
debug:
msg: "{{ results.stdout_lines }}"
首先,我们将尝试使用ping模块在vMX上进行ping测试,而不使用playbook。命令如下:
ansible -m <模块名> -i <清单文件> <目标主机>
在本例中,只有一个目标主机,但我们将其设置为“all”,以表示所有主机。
test@ubuntu201:~/ansible$ ansible -m ping -i hosts all
junos_router_1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
使用Ansible执行并获取vMX的show命令结果。之前已经确定可以通过Ansible进行ping测试,现在尝试使用playbook。命令如下:
ansible-playbook -i <主机清单> <playbook文件>
test@ubuntu201:~/ansible$ ansible-playbook -i hosts get-int.yml
PLAY [show TEST] *******************************************************************************************************
TASK [get show] ********************************************************************************************************
[WARNING]: arguments wait_for, match, rpcs are not supported when using transport=cli
ok: [junos_router_1]
TASK [debug] ***********************************************************************************************************
ok: [junos_router_1] => {
"msg": [
[
"Interface Admin Link Proto Local Remote",
"fxp0 up up",
"fxp0.0 up up inet 192.168.0.202/24"
]
]
}
PLAY RECAP *************************************************************************************************************
junos_router_1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
符合预期,我们能够获取vMX接口的状态。
【注意】在vMX中不能使用 | (管道)。
正如第1章所述,尝试通过vMX的控制台操作时,键盘输入并不如预期(无法输入管道符)。即使将控制台屏幕右上角的键盘布局更改为日文,问题仍未得到解决,因此我改为通过teraterm进行SSH登录来进行操作。
相关文章
【VMware ESXi】构建在家中的Ansible执行环境~第1章:配置Ubuntu服务器的DNS解析~
【VMware ESXi】构建在家中的Ansible执行环境~第3章:通过Ansible进行vMX配置更改与syslog集成~