Variáveis e fatos da administração:
Exercício: use autenticação básica de identidade httpd
ple.com #write
playbook
--
- name: Webserver vars
hosts: web
vars:
firewall_pkg: firewalld
firewall_ser: firewalld
web_pkg: httpd
web_ser: httpd
ssl_pkg: mod_ssl
httpdconf_src: files/httpd.conf
httpdconf_dest: /etc/httpd/conf/httpd.conf
secrets_dir: /etc/httpd/secrets
secrets_dest: "{{ secrets_dir }}/htpasswd"
secrets_src: files/htpasswd
web_root: /var/www/html
tasks:
- name: Install packages
yum:
name:
- "{{ firewall_pkg }}"
- "{{ web_pkg }}"
- "{{ ssl_pkg }}"
- name: config service
copy:
src: "{{ httpdconf_src }}"
dest: "{{ httpdconf_dest }}"
owner: root
group: root
mode: 0644
- name: Create secrets directory
file:
path: "{{ secrets_dir }}"
state: directory
owner: apache
group: apache
mode: 0500
- name: Create htpasswd
copy:
src: "{{ secrets_src }}"
dest: "{{ secrets_dest }}"
owner: apache
group: apache
mode: 0400
- name: Create index.html
copy:
content: "{{ ansible_facts['fqdn'] }} ({{ ansible_facts['all_ipv4_addresses'] }})\n"
- name: Config firewall.service
service:
name: "{{ firewall_ser }}"
state: started
enabled: true
- name: Firewall permits https
firewall:
service: https
state: enabled
immediate: true
parmanent: true
- name: config apache.service
service:
name: "{{ web_ser }}"
state: started
enabled: true
- name: test apache
hosts: localhost
become: no
vars:
- web_user: admin
vars_files:
- vars/secret.yml
tasks:
- name: Connect Apache with Auth
uri:
url: https://rhel71.com
validate_certs: no
force_basic_auth: yes
user: "{{ web_user }}"
password: "{{ web_pass }}"
return_content: yes
register: auth_test
- debug:
var: auth_test.content
#Criar arquivo criptografado
mkdir vars
ansible-vault create vars/secret.yml
New Vault password: 'caoaoyuan'
Confirm New Vault password: 'caoaoyuan'
Escreva no arquivo:
web_pass: redhat #Criar
diretório de arquivos
mkdir files
Gere dois arquivos.
htpasswd -cm htpasswd admin 生成htpasswd文件
Altere o arquivo de configuração para permitir o acesso com base na autenticação.
vim httpd.conf
#Interativamente, digite a senha para detecção de gramática
# Executar
ansible-playbook --vault-id @prompt playbook.yml
Pode ser visto que o valor de dubug é retornado.
# Resumo
1. variável permite playbook multiplex
2. Você pode definir variáveis hosts e grupos de hosts a lista
3. Você pode usar o fato de que as definições de arquivos externos e variáveis na linha de comando também pode ser
por palavras-chave 4.register usado para comando de captura saída
5.ansible Vault
6.ansible do fato de que a variável de host gerenciado automaticamente detectado