1. O que é ansible
ansible é uma plataforma de automação de código aberto, uma ferramenta de gerenciamento de configuração e uma ferramenta automatizada de operação e manutenção.
2. As vantagens do ansible
** 1) Suporte multiplataforma
2) Automação legível por humanos: o ansible fornece suporte sem agente para dispositivos linux, windows, unix e rede, adequados para ambientes físicos, virtuais, em nuvem e contêineres
3) Descreva perfeitamente o aplicativo: manual
4) Gerencie facilmente o controle de versão: manual é um texto sem formatação e pode ser considerado como código-fonte.
5) Lista dinâmica de suporte.
6) A orquestração pode ser facilmente integrada a outros sistemas: fantoches, jenkins.
7) Infraestrutura é código.
8) Reduza o 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 no rhel7 e atue como um nó de controle.
É recomendável usar o pkgs e o rpm para encontrar o pacote de instalação do software.
Primeiro pesquise pkgs no Baidu:
depois de inserir o link acima, digite o código de verificação novamente, encontre o URL de download do pacote de instalação, copie o URL e pesquise o download no navegador.
Baixe razoavelmente o pacote de instalação do sshpass.
Crie o yum source para resolver o problema de dependência da instalação ansible. Então instale.
yum install *.rpm -y ##安装刚下载的安装包
2) Exibir informações da versão ansible
3) Use o módulo de instalação para verificar o python
4. Implantar ansible
1) Diretório de configuração padrão do Ansible: / etc / ansible
arquivo de configuração padrão: /etc/ansible/ansible.cfg
arquivo de manifesto padrão: / etc / ansible / hosts
Geralmente, para evitar confusão de dados nas empresas, novos arquivos de configuração e arquivos de lista serão criados para armazenar um tipo de dados
2) Criar lista ansible
O que é uma lista: define um lote de hosts que o ansible gerenciará.
<1> Lista estática Uma para
cada linha, preencha o nome do host ou ip, por exemplo:
Você também pode definir o grupo de hosts:
[servidores da web]
rhel7_node2.westos.com
rhel8_node1.westos.com
192.168.43.30
[dbservers]
server1.westos.com
server2.westos.com
192.168.43.30
Nota: Um host pode existir em vários grupos de hosts
Verifique a lista acima:
ansible all --list-hosts ##查看清单中管理的所有主机
ansible webservers --list-hosts ##查看webservers组中所有的主机
ansible dbservers --list-hosts ##查看dbservers组中所有的主机
ansible ungrouped --list-hosts ##查看清单中不在组里面的主机
<2> Definir a
lista de hosts ansible do grupo aninhado pode conter vários grupos de hosts, como:
[servidores da web]
rhel7_node2.westos.com
rhel8_node1.westos.com
192.168.43.30
[dbservers]
server1.westos.com
server2.westos.com
192.168.43.30
[servidores: filhos]
servidores web
dbservers
<3> Simplifique as especificações do host por intervalo
Você pode especificar o nome do host ou o intervalo de ip ou o intervalo de números e letras.
Sintaxe: [START: END]
como (1): 192.168.43. [0: 254] ## corresponde ao host de 192.168.43.0/24 ip
como (2): server [01:10] .westos.com ## corresponde Todos os hosts de server01.westos.com a server10.westos.com, esse método não corresponde a server1.westos.com, apenas corresponde a server01.westos.com.
Tais como (3): [a: c] .westos.com ## correspondem ao host de a.westos.com com c.westos.com.
3) Lista de verificação
ansible all --list-hosts ## Exibir todos os hosts gerenciados
ansible webservers --list-hosts ## Exibir hosts gerenciados no grupo de servidores web
ansible ungrouped --list-hosts ## A exibição não está mais agrupada Host gerenciado
4) Local padrão da lista: / etc / ansible / hosts ## Geralmente não é usado, mas é criado por você mesmo
5) Lista dinâmica: pode ser obtida no script da comunidade de código aberto
Exercício (1):
Listar todos os hosts gerenciados na lista acima:
Listar hosts que não pertencem a um grupo:
Listar hosts que pertencem ao grupo de servidores da web:
Prática (2)
Lista personalizada
mkdir deploy-inventory ##建立清单目录
vim inventory ##建立清单文件
Listar hosts:
5. Gerenciar arquivos de configuração ansible
1) Configure o
arquivo de configuração ansible :
<1> /etc/ansible/ansible.cfg ## Arquivo de configuração básica, se nenhum outro arquivo de configuração puder ser encontrado, use este
<2> ~ / .ansible.cfg ## Se essa configuração existir e No diretório de trabalho atual, não há ansible.cfg, esse arquivo substitui /etc/ansible/ansible.cfg
<3> ./ansible.cfg ## Se houver ansible.cfg no diretório em que o comando ansible é executado, use-o, não os itens acima Dois (recomendado, os dois acima não são comumente usados)
<4> Exiba o arquivo de configuração usado:
2) Gerencie as configurações no arquivo de configuração:
[padrões] ## Defina parcialmente o valor padrão da operação ansible
[privilege_escalation] ## Configuration ansible how Executando escalação de privilégios no host gerenciado
Exemplo:
use sudo para descentralizar:
use superusuário para editar arquivos:
vim /etc/sudoers.d/westos
westos ALL = ALL (ALL) NOPASSWD: ALL
6. Execute comandos temporários
Use comandos temporários para testar e alterar rapidamente sem escrever um manual
1. Formato: host ansible -pattern -m module [-a 'module argument'] [-i inventário]
2. Verifique se é possível executar o módulo python no host gerenciado
3. Use comandos temporários para executar tarefas através do módulo
ansible-doc -l ##列出所有模块
ansible-doc ping ##查看ping模块的帮助文档
módulo ansible
Módulo de arquivo:
-cópia de | Copiar arquivos locais para outros hosts gerenciados |
---|---|
-Arquivo | Definir permissões de arquivo e outros atributos |
-lineinfile | Verifique se a linha específica está no arquivo |
-sincronizar | Sincronize o conteúdo com o rsync |
Módulo do sistema:
-firewalld | Use o firewalld para gerenciar portas e serviços de tarefas |
---|---|
-reboot | Reiniciar |
-serviço | Serviço de Gerenciamento |
-do utilizador | Adicionar, excluir e gerenciar contas de usuário |
Módulo Net Tools:
-get_url | Baixe arquivos via http, https ou ftp |
---|---|
-nmcli | Rede de Gerenciamento |
URLs | Interaja com serviços da web |
4. Exemplo:
use o módulo do usuário para garantir que o usuário westos exista em rhel7_node2.westos.com e o uid seja 1000. A
inserção da senha causará problemas, para que os dois hosts possam fazer login secreto:
ssh-keygen ##生成密钥
ssh-copy-id rhel7_node2.westos.com ##将密钥传到rhel7主机中
Agora que os dois hosts podem efetuar login sem senha, tente o comando agora mesmo e você pode executá-lo diretamente com sucesso.
Execute o comando no host gerenciado:
-o ## display de linha única
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.
A diferença entre usar shell e comando:
Use o módulo de comando para executar comandos temporários:
mkdir deploy-adhoc ##建立deploy-adhoc目录
cd deploy-adhoc ##进入目录
vim ansible.cfg ##建立配置文件
vim inventory ##建立清单文件
Use a opção -u para conectar-se ao aluno e executar o comando id
Nota (1): Quando os dois comandos acima são executados, eles precisam ser executados no diretório recém-criado; caso contrário, o resultado não será alterado, ou seja, o resultado de -u student após executar o id é o mesmo que o ID raiz.
Nota (2): Ao usar o módulo de comando para executar comandos temporários através do ansible, o host local e o aluno precisam primeiro fazer um login sem senha.
A operação de login sem senha é a seguinte:
ssh-keygen ##先生成密钥
ssh-copy-id 主机名/ip ##复制密钥
Use o módulo de cópia
1. Primeiro use o usuário aluno, porque o usuário não possui permissão de gravação, ele falhará
porque / etc / motd pode ser gravado apenas pelo superusuário e outros usuários não podem escrever, portanto, é necessário atualizar os privilégios.
2. Use escalação de privilégios
Nota: Para usar a escalação de privilégios aqui, você deve primeiro editar o arquivo /etc/sudoers.d/student
vim /etc/sudoers.d/student
Agora execute o comando como root:
ansible localhost -m copy -a 'content="hello westos\n" dest=/etc/motd' -u student --become ##become指以root的身份来执行,content指编写的文件,dest指将文件放置的位置
Se o resultado da execução for amarelo, significa que nenhum erro foi relatado e o arquivo foi alterado.Se estiver verde, significa que o resultado da execução não está errado, mas nenhuma alteração foi feita no arquivo.
Veja os resultados:
Use o parâmetro all para alterar localhost e rhel7_node2.westos.com de uma só vez.
Observe também que a edição do arquivo /etc/sudoers.d/student
localhost foi editada antes, apenas edite o arquivo em rhel7_node2.
Agora use o parâmetro all para alterar a execução de uma só vez:
ansible all -m copy -a 'content="hello westos\n" dest=/etc/motd' -u student --become
Você pode ver que o host local mostra SUCESSO e rhel7_node2.westos.com mostra CHANGED porque o host local já está no
estado correto.
Por fim, verifique se há um arquivo hello westos adicionado em / etc / motd.