Eu não uso Ansible
, mas achei simples seguir o tutorial da Digital Ocean, e estas são as etapas:
-
Instalação:
sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
-
Configurando Hosts Ansíveis:
-
Edite o
sudo nano /etc/ansible/hosts
:-
Como o tutorial usa hosts fictícios, eles seriam adicionados em uma situação real:
[group_name] alias ansible_ssh_host=your_server_ip
-
O group_name é uma tag organizacional que permite fazer referência a qualquer servidor listado sob uma palavra. O alias é apenas um nome para se referir a esse servidor. Então, em nosso cenário, estamos imaginando que temos três servidores que vamos controlar com a Ansible. Estes servidores são acessíveis a partir do servidor Ansible digitando:
ssh root@your_server_ip
-
-
Vamos supor que os endereços IP de nossos servidores são
192.0.2.1
,192.0.2.2
e192.0.2.3
. Vamos configurar isso para que possamos nos referir a eles individualmente como host1, host2 e host3 ou como um grupo como servidores:[servers] host1 ansible_ssh_host=192.0.2.1 host2 ansible_ssh_host=192.0.2.2 host3 ansible_ssh_host=192.0.2.3
-
-
Com nossas configurações atuais, se tentarmos nos conectar a qualquer um desses hosts com Ansible, o comando falhará (supondo que você não esteja operando como o usuário root). Isso ocorre porque sua chave SSH é incorporada para o usuário raiz nos sistemas remotos e Ansible tentará, por padrão, se conectar como seu usuário atual. Uma tentativa de conexão receberá este erro:
host1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }
-
No servidor Ansible, estamos usando um usuário chamado demo. Ansible tentará se conectar a cada host com o ssh demo @ server. Isso não funcionará se o usuário de demonstração não estiver no sistema remoto. Podemos criar um arquivo que informe todos os servidores do grupo "servidores" para se conectar usando o usuário root. Para fazer isso, criaremos um diretório na estrutura de configuração do Ansible chamado group_vars. Dentro desta pasta, podemos criar arquivos em formato YAML para cada grupo que desejamos configurar:
sudo mkdir /etc/ansible/group_vars sudo nano /etc/ansible/group_vars/servers
-
Adicione isto aqui:
--- ansible_ssh_user: root
- Se você deseja especificar detalhes de configuração para cada servidor, independentemente da associação de grupos, você pode colocar esses detalhes em um arquivo em / etc / ansible / group_vars / all. Hosts individuais podem ser configurados criando arquivos em um diretório em / etc / ansible / host_vars.
-
-
Usando Comandos Ansíveis Simples:
ansible -m ping all # Output: host1 | SUCCESS => { "changed": false, "ping": "pong" } host3 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }
-
O "all" significa todos os hosts. Poderíamos facilmente especificar um grupo:
ansible -m ping servers
-
Também podemos especificar um host individual:
ansible -m ping host1
-
Podemos especificar vários hosts, separando-os com dois pontos:
ansible -m ping host1:host2
-
O módulo "shell" nos permite enviar um comando de terminal para o host remoto e recuperar os resultados. Por exemplo, para descobrir o uso de memória em nossa máquina host1, poderíamos usar:
ansible -m shell -a 'free -m' host1 # Result: host1 | SUCCESS | rc=0 >> total used free shared buffers cached Mem: 3954 227 3726 0 14 93 -/+ buffers/cache: 119 3834 Swap: 0 0 0
-
Mais informações: