Salve galera!

Neste artigo vamos realizar a instalação do Ansible no Windows 10 utilizando o Windows Subsystem for Linux (WSL).

Habilitando o WSL

Para habilitar o Windows Subsystem for Linux vá na pesquisa do Windows 10 e digite "Ativar ou desativar recursos do Windows".

01

Na janela que irá abrir encontre a opção "Subsistema do Windows para Linux" e a ative através do check box.

02

Aguarde o Windows realizar a instalação do recurso.

03

Reinicie para concluir a instalação.

04

Vá até a loja do Windows e busque por "WSL". Nos resultados da busca clique em "Obtenha os aplicativos" para ver as versões disponíveis de Linux até o momento.

05

Foi utilizado o openSUSE Leap 42, que é gratuito, porém há outras opções disponíveis. Clique em "Adquirir" para instalar.

06

Quando estiver finalizado inicie.

07

Ao abrir pela primeira vez será finalizada a instalação, solicitado o nome de usuário e senha e também a senha de root

09

Ahhh o terminal… ❤

08

Agora mãos à obra para instalar o Ansible

Procurando o pacote:

luish@NOTEBOOK:~> sudo zypper search ansible

[sudo] password for root:
Building repository 'oss' cache  ..............[done]
Building repository 'oss_update' cache ........[done]
Loading repository data...
Reading installed packages...

S | Name | Summary | Type
--+---------+----------------------------+-----------
| ansible | Software automation engine | package
| ansible | Software automation engine | srcpackage

Instalando:

luish@NOTEBOOK:~> sudo zypper install ansible

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 15 NEW packages are going to be installed:
ansible python-cffi python-cryptography python-enum34 python-idna python-ipaddress python-Jinja2 python-MarkupSafe
python-paramiko python-pyasn1 python-pycparser python-pycrypto python-PyYAML python-setuptools python-six

15 new packages to install.
Overall download size: 8.0 MiB. Already cached: 0 B. After the operation, additional 50.5 MiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package python-enum34-1.1.3-5.1.noarch (1/15), 54.6 KiB (298.0 KiB unpacked)
Retrieving: python-enum34-1.1.3-5.1.noarch.rpm ...[done (215.4 KiB/s)]
Retrieving package python-idna-2.0-5.1.noarch (2/15), 77.5 KiB (531.5 KiB unpacked)
Retrieving: python-idna-2.0-5.1.noarch.rpm ....[done]
Retrieving package python-ipaddress-1.0.18-1.1.noarch (3/15), 29.7 KiB (154.9 KiB unpacked)Retrieving: python-ipaddress-1.0.18-1.1.noarch.rpm .....[done]
Retrieving package python-pyasn1-0.1.9-12.1.noarch (4/15), 98.7 KiB (473.7 KiB unpacked)Retrieving: python-pyasn1-0.1.9-12.1.noarch.rpm ...[done (3.7 KiB/s)]
Retrieving package python-pycparser-2.10-8.2.noarch (5/15), 153.9 KiB (846.5 KiB unpacked)Retrieving: python-pycparser-2.10-8.2.noarch.rpm ...[done]
Retrieving package python-setuptools-18.0.1-6.4.noarch (6/15), 263.8 KiB ( 1.0 MiB unpacked)Retrieving: python-setuptools-18.0.1-6.4.noarch.rpm ...[done (3.7 KiB/s)] Retrieving package python-six-1.9.0-8.4.noarch (7/15), 24.3 KiB ( 61.4 KiB unpacked)
Retrieving: python-six-1.9.0-8.4.noarch.rpm ....[done]
Retrieving package python-MarkupSafe-0.23-10.4.x86_64 (8/15), 27.7 KiB ( 80.3 KiB unpacked)
Retrieving: python-MarkupSafe-0.23-10.4.x86_64.rpm ...[done (7.9 KiB/s)]
Retrieving package python-pycrypto-2.6.1-10.2.x86_64 (9/15), 370.9 KiB ( 2.0 MiB unpacked)
Retrieving: python-pycrypto-2.6.1-10.2.x86_64.rpm .......[done]
Retrieving package python-cffi-1.5.2-3.3.x86_64 (10/15), 399.7 KiB ( 1.7 MiB unpacked)Retrieving: python-cffi-1.5.2-3.3.x86_64.rpm .......[done (7.9 KiB/s)]
Retrieving package python-Jinja2-2.8-9.4.noarch (11/15), 230.1 KiB ( 1.4 MiB unpacked) Retrieving: python-Jinja2-2.8-9.4.noarch.rpm ...[done]
Retrieving package python-cryptography-1.3.1-4.2.x86_64 (12/15), 336.2 KiB ( 1.9 MiB unpacked)
Retrieving: python-cryptography-1.3.1-4.2.x86_64.rpm ....[done (15.0 KiB/s)]
Retrieving package python-paramiko-2.0.2-3.2.noarch (13/15), 243.0 KiB ( 1.2 MiB unpacked)
Retrieving: python-paramiko-2.0.2-3.2.noarch.rpm ...[done (15.9 KiB/s)]
Retrieving package python-PyYAML-3.12-10.1.x86_64 (14/15), 154.5 KiB (625.5 KiB unpacked)
Retrieving: python-PyYAML-3.12-10.1.x86_64.rpm ..[done]
Retrieving package ansible-2.4.1.0-6.1.noarch (15/15), 5.6 MiB ( 38.3 MiB unpacked)
Retrieving: ansible-2.4.1.0-6.1.noarch.rpm ..........[done (1.9 MiB/s)]
Checking for file conflicts: .......................[done]
( 1/15) Installing: python-enum34-1.1.3-5.1.noarch ......[done]
( 2/15) Installing: python-idna-2.0-5.1.noarch ........[done]
( 3/15) Installing: python-ipaddress-1.0.18-1.1.noarch .......[done]
( 4/15) Installing: python-pyasn1-0.1.9-12.1.noarch .........[done]
( 5/15) Installing: python-pycparser-2.10-8.2.noarch .....[done]
( 6/15) Installing: python-setuptools-18.0.1-6.4.noarch .........[done]
Additional rpm output:
update-alternatives: using /usr/bin/easy_install-2.7 to provide /usr/bin/easy_install (easy_install) in auto mode

( 7/15) Installing: python-six-1.9.0-8.4.noarch ........[done]
( 8/15) Installing: python-MarkupSafe-0.23-10.4.x86_64 .....[done]
( 9/15) Installing: python-pycrypto-2.6.1-10.2.x86_64 .....[done]
(10/15) Installing: python-cffi-1.5.2-3.3.x86_64 ...........[done]
(11/15) Installing: python-Jinja2-2.8-9.4.noarch .............[done]
(12/15) Installing: python-cryptography-1.3.1-4.2.x86_64 ........[done]
(13/15) Installing: python-paramiko-2.0.2-3.2.noarch ....[done]
(14/15) Installing: python-PyYAML-3.12-10.1.x86_64 ..........[done]
(15/15) Installing: ansible-2.4.1.0-6.1.noarch ..........[done]

Testando…

luish@NOTEBOOK:~> ansible --version

ansible 2.4.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/luish/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.13 (default, Jan 03 2017, 17:41:54) [GCC]

Agora já temos o Ansible instalado e funcionando, porém a versão de Linux instalada não possui o pacote ssh-pass instalado por padrão, o que é necessário para utilizar o parâmetro –ask-pass do Ansible.

luish@NOTEBOOK:~> ansible 192.168.0.200 -u pi --ask-pass -m ping

SSH password:
192.168.0.200 | FAILED! => {
"failed": true,
"msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"
}
luish@NOTEBOOK:~>

Instalando o ssh-pass

luish@NOTEBOOK:~> sudo zypper install sshpass

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
sshpass

1 new package to install.
Overall download size: 18.3 KiB. Already cached: 0 B. After the operation, additional 36.5 KiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package sshpass-1.05-8.1.x86_64                                         (1/1),  18.3 KiB ( 36.5 KiB unpacked)
Retrieving: sshpass-1.05-8.1.x86_64.rpm ...........[done (13.6 KiB/s)]
Checking for file conflicts: ........................[done]
(1/1) Installing: sshpass-1.05-8.1.x86_64 .........................[done]
luish@NOTEBOOK:~>

Adicionando o servidor ao arquivo know_hosts

luish@NOTEBOOK:~> ssh-keyscan -H 192.168.0.200 >> 
/home/luish/.ssh/known_hosts

# 192.168.0.200:22 SSH-2.0-OpenSSH_7.4p1 Raspbian-10+deb9u2
# 192.168.0.200:22 SSH-2.0-OpenSSH_7.4p1 Raspbian-10+deb9u2
# 192.168.0.200:22 SSH-2.0-OpenSSH_7.4p1 Raspbian-10+deb9u2

Agora vamos realizar um teste de ping com o servidor utilizando o Ansible

luish@NOTEBOOK:~> ansible 192.168.0.200 -u pi --ask-pass -m ping

SSH password:
192.168.0.200 | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}

Pronto pessoal, Ansible instalado e funcionando no Windows 10 com o Windows Subsystem for Linux usando o openSUSE.