Ansible: visão geral e uso
Agência web » Notícias digitais » Ansible: visão geral e uso

Ansible: visão geral e uso

O que é'Ansible ? Como usá-lo? Quais concorrentes? Um pequeno truque para direcionar um novo produto que está causando uma forte impressão há algum tempo.

Ansible apareceu em 2012. Em outubro de 2015, a Red Hat anunciou a aquisição da Ansible, que então se tornou um produto carro-chefe em sua pilha. Isso se encaixa perfeitamente nas soluções de Red Hat e reforça os argumentos sobre a facilidade de gerenciar um farm de servidores.

Ansible é uma solução para realizar implantações, execução de tarefas e gerenciamento de configuração em várias máquinas ao mesmo tempo. Ele é agente menos e use SSH para implementar as ações a serem realizadas, elas mesmas escritas em Yaml.

Em Ansible, existem muitos produtos que podem atrapalhar no começo. você pode ouvir sobre Manual do Ansible, Cofre Ansible et Galáxia Ansible.

Ansible e os módulos

Duas coisas a saber:

  • Quando você usa Ansible, você usa módulos. Existe uma lista de módulos já escritos, mas você também pode escrever o seu próprio. Você precisará escrevê-lo em Python.
  • Você deve fornecer um grupo de domínio/IP ou grupo onde a ação deve ser usada.

Exemplo :

Vamos verificar se nossa máquina está boa up com o módulo sibilo.

1
2
3
4
5
$ ansible localhost -m ping
host local | SUCESSO => {
"mudado": falso,
"pingar": "pong"
}

Para usar algo diferente de localhost, como um conjunto de domínios, você deve preencher o arquivo / etc / ansible / hosts.

1
2
3
[baptiste-donaux.fr]
www.baptiste-donaux.fr
me.baptiste-donaux.fr
1
2
3
4
5
6
7
8
9
10
$ ansible -m ping baptiste-donaux.fr
me.baptiste-donaux.fr | sucesso >> {
"mudado": falso,
"pingar": "pong"
}
www.baptiste-donaux.fr | sucesso >> {
"mudado": falso,
"pingar": "pong"
}

E é assim que verificamos que um piscina de servidores em bom up . Aqui está a lista dos módulos básicos presentes.

Depois de entender como um módulo funciona, você pode usar todos os outros módulos da mesma maneira. Ao usar um módulo, você pode fornecer argumentos (argumento -a).

Por exemplo, como executar um comando em muitos.

1
2
3
4
5
6
$ ansible -m shell -a “docker – versão” baptiste-donaux.fr
me.baptiste-donaux.fr | bem sucedido | rc=0 >>
Docker versão 1.12.1, compilação 23cf638
www.baptiste-donaux.fr | bem sucedido | rc=0 >>
Docker versão 1.12.1, compilação 23cf638

Mas também certifique-se de que um pacote esteja instalado.

1
2
3
4
$ ansible -m apt -a “nome=vim estado=presente” www.baptiste-donaux.fr
www.baptiste-donaux.fr | sucesso >> {
"mudado": falso
}

Ou simplesmente atualize um ou mais servidores.

1
2
3
4
5
6
7
8
9
10
11
12
$ ansible -m apt -a “update_cache=sim” www.baptiste-donaux.fr
www.baptiste-donaux.fr | sucesso >> {
"mudado": falso
}
$ ansible -m apt -a “atualizar=dist” www.baptiste-donaux.fr
www.baptiste-donaux.fr | sucesso >> {
"mudado": falso,
"mensagem": “Lendo listas de pacotes…nConstruindo árvore de dependências…nLendo informações de estado…n0 atualizado, 0 recém-instalado, 0 para remover e 0 não atualizado.n”,
“stderr”: "",
"stdout": “Lendo listas de pacotes…nConstruindo árvore de dependências…nLendo informações de estado…n0 atualizado, 0 recém-instalado, 0 para remover e 0 não atualizado.n”
}

Ansible e Playbooks (bem-vindo ao mundo verdadeiro)

Gerir uma frota de máquinas com encomendas já é bom, e é sobretudo a base deAnsible. Apesar disso, é difícil imaginar jogar um cenário executando comandos um após o outro. Felizmente para nós, manual do ansible está aqui para isso!

Playbook para gerenciar tarefas facilmente

Os cenários são escritos em YAML. Aqui está um pequeno exemplo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
– anfitriões: baptiste-donaux.fr
tarefas:
- nome: Adicionar chave APT para o repositório do Docker
apt_key:
servidor de chaves: “hkp://p80.pool.sks-keyservers.net:80”
ID: 58118E89F3A912897C070ADBF76221572C52609D
- nome: Adicionar repositório APT Docker
apt_repository: repositórios='deb https://apt.dockerproject.org/repo debian-jessie main' estado=presente
- nome: Atualize o cache do APT com o novo repositório
apto: update_cache=sim
- nome: Instale o pacote docker-engine se nãonão existe
apt: nome=docker-engine estado=presente
– nome: habilitar e iniciar o serviço Docker
systemd: ativado=sim estado=inicializado nome=docker
– nome: InstallPython
apt: nome=python estado=presente
– nome: Instalar PIP
apt: nome=python-pip estado=presente
– nome: dependência docker-py
pip: nome=docker-py
– nome: Puxar imagem Nginx
docker_image: nome=nginx pull=sim
– nome: Criar um contêiner Nginx
docker_container:
nome: proxy
imagem: nginx
portas_publicadas:
– “80:80”
estado: presente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ ansible my_playbook.yml
JOGUE [baptiste-donaux.fr] ***************************************** * ***********
TAREFA [configuração] ********************************************** *********
ok: [baptiste-donaux.fr]
TAREFA [Adicionar chave APT para Repositório Docker] ****************************************
ok: [baptiste-donaux.fr]
TAREFA [Adicionar repositório APT Docker] ******************************************* ****
ok: [baptiste-donaux.fr]
TAREFA [Atualizar cache APT com novo repositório] ************************
ok: [baptiste-donaux.fr]
TAREFA [Instalar o pacote do docker-engine if nãonão existe] ***********
ok: [baptiste-donaux.fr]
TAREFA [Instalar Python] ********************************************* *************
ok: [baptiste-donaux.fr]
TAREFA [Instalar PIP] ********************************************* ****************
ok: [baptiste-donaux.fr]
TASK [dependência docker-py] ******************************************* *********
ok: [baptiste-donaux.fr]
TAREFA [Nginx Image Pull] ******************************************** *************
ok: [baptiste-donaux.fr]
TAREFA [Criar um contêiner Nginx] ******************************************* *****
ok: [baptiste-donaux.fr]
REPRODUZIR ************************************ ** *********
baptiste-donaux.fr: ok=10 alterado=0 inacessível=0 falhou=0

E isso não é nada mais simples. Além de rodar um cenário completo em um conjunto de servidores, se algum deles for encontrado com erro, um arquivo .repetir será criado e, ao reiniciar o comando, o cenário será retomado de onde você parou.

Reinicie facilmente seu cenário e continue de onde parou

Ansible Galaxy e Vault

Galaxy e onde armazenar seus mods

Ansible-Galaxy é um hub para compartilhar seus módulos. Funciona um pouco como Hub do Docker para imagens do Docker.

Vault e como proteger informações confidenciais

Em alguns casos, você precisará armazenar informações confidenciais em seus cenários (senha, etc.). Em vez de armazenar essas informações em texto simples, você pode codificar/decodificar seus arquivos.

Um pequeno exemplo não fará mal.

1
2
3
4
# my_playbook.yml
– anfitriões: localhost
tarefas:
- concha: sshpass -p "fooo" scp -r /bar baz@localhost:/qux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Codifique seu arquivo com o Vault
$ansible-vault criptografar my_playbook.yml
Nova senha do cofre:
Confirme a senha do novo cofre:
Criptografia bem-sucedida
# Exibe o playbook codificado
$ cat my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Use o manual codificado sem decodificá-lo primeiro
$ ansible-playbook my_playbook.yml –ask-vault-pass
Senha do cofre:
...

É fácil proteger seus playbooks com o Ansible Vault

Conclusão

Este artigo tem como objetivo apresentar Ansible e mostre como isso pode simplificar suas tarefas. Sinta-se à vontade para fornecer feedback, melhorar e/ou corrigir este post.

★ ★ ★ ★ ★