Introdução Ansible
1. O que é ansible
ansible é uma plataforma de automação de código aberto, uma ferramenta de gerenciamento de configuração, uma ferramenta automatizada de operação e manutenção
2. As vantagens do ansible
- Suporte multiplataforma
- Automação legível por humanos: o ansible fornece suporte sem agente para dispositivos Linux, Windows, unix e de rede, adequados para ambientes físicos, virtuais, em nuvem e contêineres
- Aplicação de descrição perfeita: manual
- Gerencie facilmente o controle de versão: o playbook é um texto simples e pode ser considerado como código-fonte
- Lista dinâmica de suporte
- A orquestração pode ser facilmente integrada a outros sistemas: fantoche, jenkins
- Infraestrutura como código
- Reduzir erro humano
Tarefas, play e playbook são projetados para serem idempotentes; portanto, quando o playbook for executado, se o host de destino estiver no estado correto, nenhuma alteração será feita.
3. Instale o ansible
1. Instale o ansible na estação de trabalho e atue como um nó de controle
yum install -y ansible
2. Exibir informações sobre a versão
ansible ansible --version
3. Use o módulo de instalação para verificar o python
ansible -m setup localhost | grep ansible_python_version
“ansible_python_version”: “3.6.8”,
Implantar ansible
Para implantar o ansible, você deve executar a autenticação sem senha no host de gerenciamento e no host gerenciado antes de poder implementar a implantação automática do ansible.
1. Crie uma lista ansible (explique)
O que é uma lista?
A lista ansible define um lote de hosts que o ansible gerenciará
- Lista estática
Um para cada linha, preencha o nome do host ou ip, como:
www.westos.org
172.25.254.250
Você também pode definir grupos de hosts:
[servidores da web]
server1.westos.org
server2.westos.org
172.25.0.1
[dbservers]
node1.westos.org
node1.westos.org
'Observação: um host pode existir em vários grupos de hosts'
- A definição da
lista de hosts ansible do grupo aninhado pode conter vários grupos de hosts, como:
[servidores da web]
server1.westos.org
server2.westos.org
172.25.0.1
[dbservers]
node1.westos.org
node1.westos.org
[servidores: filhos ]
servidores web
dbservers
- Simplifique as especificações do host por escopo
Pode especificar o nome do host ou o intervalo de IP ou o número e o intervalo de letras
Regras gramaticais: [START: END]
1.
172.25. [0: 4]. [0: 254] #match 172.25.0.0/24, 172.25.1.0/24…
2.
server [01:10] .example.com #match server01.example.com para server10 .example.com todos os hosts
3.
[a: c] .example.com #match a.example.com a c.example.com
-
Lista de verificação
[root @ workstation ~] # ansible workstation.lab.example.com --list-hosts
'Não há hosts gerenciados no host atual' -
Local padrão do inventário: / etc / ansible / hosts # Geralmente não usado, mas crie você mesmo um novo arquivo de inventário.Depois da
alteração, o host gerenciado é exibido.
Você também pode exibir o interior do grupo:
você pode exibir os que não estão no grupo:
-
Lista dinâmica-> pode ser obtida a partir de scripts na comunidade de código aberto
-
Lista personalizada
mkdir deploy-inventário #Criar diretório de
inventário vim inventário Criar arquivo de inventário
Listar hosts
ansible all -i inventory --list-hosts
-i especifica o arquivo
ansible ungrouped -i inventory --list-hosts 列出不在组中的主机
ansible www -i inventory --list-hosts 列出www组中的主机
ansible westos -i inventory --list-hosts westos组包含www组和bbs组
É
recomendável usar várias máquinas virtuais para alterar o conteúdo do arquivo , para que o efeito possa ser melhor visualizado.
2. Gerenciar arquivos de configuração ansible
1. Configure ansible
Arquivo de configuração:
/etc/ansible/ansible.cfg
Arquivo de configuração básica, se nenhum outro arquivo de configuração for encontrado, use-o com a menor prioridade
~/.ansible.cfg
Se essa configuração existir e não houver ansible.cfg no diretório de trabalho atual, esse arquivo substituirá /etc/ansible/ansible.cfg
./ansible.cfg
Se houver ansible.cfg no diretório em que o comando ansible é executado, use-o em vez dos dois acima (recomendado, os dois não são comumente usados).
Exibir o arquivo de configuração usado
Quando o arquivo ansible.cfg existir no diretório atual:
o arquivo de configuração do diretório atual será usado.
Gerenciar configurações nos arquivos de configuração:
[padrão] Defina o valor padrão da operação ansible em parte
. Ele não precisa ser alterado. É comum.
[privilege_escalation] Configure como o ansible executa a escalação de privilégios nos hosts gerenciados
Exemplo: Escreva seu próprio arquivo de configuração.
vim ansible.cfg
[defaults]
inventory = ./inventory
remote_user = student 指定登录受管主机的用户,如不指定则使用当前用户名称
ask_pass = false 是否提示输入ssh密码,做了免密就可以设置为false,否则需为true
[privilege_escalation]
become = true 连接到受管主机上是否进行身份切换
become_method = sudo 切换方式,默认为sudo
become_user = root 切换到的用户
become_ask_pass = false 是否需要为become_method提示输入密码,默认为false
Use o sudo para descentralização e use o superusuário para editar arquivos:
vim /etc/sudoers.d/thermal
3. Execute o comando temporário
Use comandos temporários para testar e alterar rapidamente sem escrever um manual
1. Formato:
ansible host-pattern -m module [-a 'module arguments'] [-i inventory]
-m 后面接模块
-a 后面接参数
-i 指定文件
Faça uma boa análise local:
2. Verifique se você pode executar o módulo python no host gerenciado.
3. Use comandos temporários para executar tarefas através do módulo
[root @ workstation ~] # ansible-doc -l # Listar todos os módulos
Existem muitos módulos, de a-z
[ root @ workstation ~] # ansible-doc ping #Exibir o documento de ajuda do módulo ping #
ansible module Módulo de
arquivo: -copy: copia o arquivo local para o host gerenciado
-file: define permissões de arquivo e outros atributos
-lineinfile: verifique se a linha específica
-Sincronize no arquivo : use rsync para sincronizar o conteúdo
Módulos de sistema: -firewalld: use firewalld para gerenciar qualquer porta e serviço
-reboot: restart
-service: manage service
-user: adicione, exclua e gerencie contas de usuário
Net Tools module-get_url: baixe arquivos via http, https ou ftp-
nmcli: gerencie uri de rede:
interaja com serviços da web
4. Exemplo: use o módulo do usuário para garantir que o usuário térmico exista no rhel71.com e o uid seja 1000
ansible -m user -a 'name=thermal uid=1000 state=present' rhel71.com
Execute o comando no host gerenciado:
ansible webservers -m command -a /usr/bin/hostname
serverb.lab.example.com | CHANGED | rc = 0 >> # Relatório de status, mostrando o nome do host e os resultados da operação
serverb.lab.example.com # Saída de comando
ansible webservers -m command -a /usr/bin/hostname -o #加上-o参数,单行显示
'Nota: O módulo de comando permite que comandos remotos sejam executados, mas esses comandos não são processados pelo shell; portanto, as variáveis de ambiente do shell não podem ser acessadas; portanto, o redirecionamento, a transferência e outras operações não podem ser executadas e podem ser executadas com o módulo shell. "
A diferença entre usar shell e comando:
ansible localhost -m command -a set
ansible localhost -m shell -a set
Crie o diretório / root / deploy-adhoc e escreva um arquivo de configuração.
Use o módulo de comando para executar comandos temporários
[root @ estação de trabalho deploy-adhoc] # comando localhost -m ansible -a 'id'
[ localhost- raiz implanta-adhoc] # ansible localhost -m comando -a 'id' -u root #Use a
opção -u para se conectar com o aluno E execute o comando id
'quando os dois comandos acima forem executados, eles precisam ser executados no diretório recém-criado, caso contrário, o resultado não será alterado'
Use o módulo de cópia
1. Primeiro use o usuário aluno, porque o usuário estudante não tem permissão de gravação, ele falhará
[root @ estação de trabalho deploy-adhoc] # host local ansível -m copy -a 'content = "westos ansible \ n" dest = / etc / motd '-u aluno
2. Use escalação de privilégios
'注意:此处使用特权升级需要先编辑/etc/sudoers.d/student文件'
[root@workstation deploy-adhoc]# cat /etc/sudoers.d/student
student ALL=(ALL) NOPASSWD: ALL
#Execute como root [root @ estação de trabalho deploy-adhoc] # localhost ansível -m cópia -a 'content = “westos ansible \ n” dest = / etc / motd' -u student --become
[root @ estação de trabalho deploy-adhoc ] # cat / etc / motd
westos ansible
Use todos os parâmetros para alterar servera e localhost de uma só vez
[root@workstation deploy-adhoc]# ansible all -m copy -a 'content="westos ansible\n" dest=/etc/motd' -u thermal --become
Você pode ver o host local mostra SUCESSO e o servera mostra CHANGED, porque o host local já está no estado correto.Pode-
se ver que a alteração foi concluída.
Veja
[root @ workstation deploy-adhoc] # comando ansible all -m -a 'cat / etc / motd' -u student