operação e manutenção automatizadas possíveis (1)

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:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
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  ##安装刚下载的安装包

Insira a descrição da imagem aqui
2) Exibir informações da versão ansible
Insira a descrição da imagem aqui
3) Use o módulo de instalação para verificar o python
Insira a descrição da imagem aqui

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
Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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
Insira a descrição da imagem aqui
Nota: Um host pode existir em vários grupos de hosts
Verifique a lista acima:

ansible  all   --list-hosts  ##查看清单中管理的所有主机

Insira a descrição da imagem aqui

ansible webservers --list-hosts    ##查看webservers组中所有的主机
ansible dbservers --list-hosts ##查看dbservers组中所有的主机

Insira a descrição da imagem aqui

ansible ungrouped --list-hosts  ##查看清单中不在组里面的主机

Insira a descrição da imagem aqui
<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
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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):
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Listar todos os hosts gerenciados na lista acima:
Insira a descrição da imagem aqui
Listar hosts que não pertencem a um grupo:
Insira a descrição da imagem aqui
Listar hosts que pertencem ao grupo de servidores da web:
Insira a descrição da imagem aqui
Prática (2)
Lista personalizada

mkdir  deploy-inventory    ##建立清单目录
vim  inventory    ##建立清单文件

Insira a descrição da imagem aqui
Listar hosts:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

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:
Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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

Insira a descrição da imagem aqui
3. Use comandos temporários para executar tarefas através do módulo

ansible-doc -l   ##列出所有模块

Insira a descrição da imagem aqui

ansible-doc ping  ##查看ping模块的帮助文档

Insira a descrição da imagem aqui
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
Insira a descrição da imagem aqui
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主机中

Insira a descrição da imagem aqui
Agora que os dois hosts podem efetuar login sem senha, tente o comando agora mesmo e você pode executá-lo diretamente com sucesso.
Insira a descrição da imagem aqui
Execute o comando no host gerenciado:
Insira a descrição da imagem aqui
-o ## display de linha única
Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Use o módulo de comando para executar comandos temporários:

mkdir deploy-adhoc ##建立deploy-adhoc目录
cd  deploy-adhoc   ##进入目录
vim ansible.cfg  ##建立配置文件

Insira a descrição da imagem aqui

vim inventory   ##建立清单文件

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Use a opção -u para conectar-se ao aluno e executar o comando id
Insira a descrição da imagem aqui
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   ##复制密钥

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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á
Insira a descrição da imagem aqui
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

Insira a descrição da imagem aqui
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指将文件放置的位置

Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui

Publicado 35 artigos originais · elogiado 0 · visitas 1407

Acho que você gosta

Origin blog.csdn.net/qq_44749796/article/details/105316837
Recomendado
Clasificación