3. Implemente o manual #########
O objetivo deste capítulo: escrever um manual básico ansible
3.1 Escreva e execute o playbook
3.1.1 Exibir comandos temporários de um usuário especificado
'O formato yaml geralmente possui a extensão yml, e o yaml não possui requisitos estritos de indentação, mas existem dois princípios básicos'
'1. Os elementos de dados no mesmo nível na mesma hierarquia devem ter a mesma indentação'
'2. Se o item pertencer a um filho de outro item, o recuo deverá ser maior que o item pai '
ansible -m user -a "name=student uid=1000state=present" servera.lab.example.com
Reescrito como manual
[root@workstation ~]# cat user.yml
--- 开头三个破折号,文档的开始标记
- name: Configure User 可写可不写,但是建议使用
... 结尾三个省略号,结束标记(通常省略)
A reprodução em si é um conjunto de pares de chave e valor. As chaves na mesma reprodução devem usar o mesmo recuo,
hosts é uma chave e o conteúdo a seguir é o valor. Esta é uma coleção aninhada.
execução do manual:
3.1.2 Instalar o apache
Crie um novo diretório para facilitar a operação
mkdir /demo
vim webserver.yml
Pode-se ver que o serviço httpd foi instalado.
3.1.3 Verifique se o serviço httpd foi iniciado
vim service.yml
Efeito:
3.1.4 Melhorar o nível de detalhe da saída
A saída padrão do ansible-playbook não fornece informações detalhadas sobre a execução da tarefa. O parâmetro -v fornece quatro níveis:
- -v #Exibir resultados da tarefa
- -vv #Exibir resultados de tarefas e configuração de tarefas
- -vvv # contém informações sobre conexões com hosts gerenciados
- -vvvv #Adicione opções adicionais de verbosidade relacionadas à conexão de plug-ins (incluindo usuários que executam scripts e scripts executados em hosts gerenciados)
# Melhor para executar a verificação de sintaxe antes de executar o manual de instruções
# Sem erro de sintaxe
Altere o manual de instruções:
Se houver um erro gramatical, ele solicitará o local errado.
3.1.5 Execute o funcionamento a seco, apenas visualize o resultado
Primeiro, removemos o serviço httpd no host 71:
depois executamos o playbook; o
ansible-playbook -C webserver.yml
ainda não está instalado. Isso pode ser visto.
"A execução a seco relatará o que acontecerá quando este manual for executado, mas não alterará o host de destino"
3.1.6 Instale, configure a página de lançamento padrão e inicie o apache
vim site.yml
Gramática de detecção
ansible-playbook --syntax-check site.yml
Não tem problema
# Crie o arquivo de configuração e a lista
# Crie a página de publicação padrão
cat files / index.html para
executar o playbook:
service installation and enable.
A página de publicação foi alterada com sucesso.
# Teste
onda obter conteúdo do navegador remoto.
3.2 Implementar jogo múltiplo
Predefinição:
ansible-doc -l
#Lista todos os módulos ansible-doc yum #Lista de uso e exemplos de
yum ansible-doc -s yum #Utilize o terminal para gerar o uso de cada parâmetro no módulo yum
3.3 Alterações na sintaxe do yaml do PLAYBOOK
- Comentários de yaml
- yaml string
insira diretamente
esta é uma string
aspas simples
'esta é uma string'
aspas múltiplas
"this is a string"
# Exercício
Altere a página do host remoto sem fechar o firewall e visite:
vim webserver.yml
---
- name: Enable internet service
hosts: web
become: yes
tasks:
- name: apache and firewalld installed # 检测firewalld和httpd是否为最新版
yum:
name:
- httpd
- firewalld
state: latest
- name: Configure index.html # 配置默认发布页面
copy:
content: "welcome to westos!\n"
dest: /var/www/html/index.html
- name: firewalld enabled and runing # 检测firewalld是否开机自启并启用
service:
name: firewalld
enabled: true
state: started
- name: firewald primits http # 检测firewalld是否添加http服务
firewalld:
service: http
permanent: true
state: enabled
immediate: yes
- name: httpd enabled and runing # 检测httpd服务是否自启并运行
service:
name: httpd
enabled: true
state: started
- name: test webserver 本地主机测试访问
hosts: localhost
become: no
tasks:
- name: connect web server
uri:
url: http://rhel71.com
return_content: yes
status_code: 200
# Gramática de detecção
# executar
ansible-playbook -v webserver.yml
Você pode ver o conteúdo bem-vindo ao westos
e o código de status 200 é retornado
3.4 Variáveis e fatos da administração
Use algumas variáveis no manual em vez de variáveis para simplificar a escrita do manual
3.4.1 Variáveis de gerenciamento
Introdução às variáveis ansiáveis
As variáveis podem conter os seguintes valores:
usuários a serem criados,
pacotes a serem instalados,
serviços a serem reiniciados,
arquivos a serem excluídos, documentos a
serem recuperados da Internet
Variável nomeada
Os nomes de variáveis devem começar com uma letra e podem conter apenas letras, números e sublinhados Servidor web
incorreto_servidor da
web
westos.file
remote_file 1arquivo de arquivo1
Definir variáveis
Três níveis de escopo Escopo
global: Variáveis definidas na linha de comando ou na configuração ansible
Escopo de reprodução: Variáveis definidas no play e estruturas relacionadas
Escopo do host: Tarefas coletadas ou registradas pelo inventário, fatos, definidos em grupos de hosts e hosts individuais Variáveis
'Se variáveis com o mesmo nome são definidas em vários níveis, a variável com o nível mais alto é preferida e o escopo estreito tem precedência sobre o escopo amplo'
3.4.2 Variáveis no manual
Definir variáveis no manual
1. Maneira comum: no bloco vars no início do manual:
2. Defina a variável do manual no arquivo externo
cat user.yml
Use variáveis no playbook
Coloque o nome da variável entre colchetes.
'Nota: Quando a variável é usada como o primeiro elemento a iniciar um valor, você deve usar aspas.'