Sigo volviendo a contar expresamente la documentaciĂłn de Ansible y analizo las consecuencias de no saberla (enlace a la parte anterior) .
En esta parte, discutimos los inventarios. TambiĂ©n prometĂ variables, pero el inventario resultĂł ser un gran tema, por lo que le dedicamos un artĂculo por separado.
Analizaremos cada elemento del inventario (excepto host_group_vars plugin
) y discutiremos por qué es, cómo usarlo correctamente y cómo está mal.
Tabla de contenido:
- ¿Qué es un host? (y un poco sobre transportes)
- IP frente a acceso FQDN;
inventory_hostname
vsansible_host
ansible_user
- escribir o no escribir?- Grupos
- Variables: inventario o libro de jugadas?
- ClasificaciĂłn de inventarios por origen.
El inventario es una lista de hosts, grupos y variables auxiliares. Estudiando los conceptos básicos, analizaremos cada momento en detalle, con una bĂşsqueda de cĂłmo "deberĂa" y la condena de "cĂłmo no".
Inventario: hosts
El host en el inventario son los elementos del diccionario hosts
para el grupo en el inventario yaml (en el inventario inicial, este es el primer elemento de la lĂnea):
somegroup:
hosts:
somehost1:
somehost2:
somehost1, somehost2 son hosts.
"" , ? , , — , . . , VM, , , ipmi' ..
: , - . , : , ssh ( , ); ( ); , lxc-. , - .
: - , , . libvirt. , — "vms" - . : , - ssh ...
… - , include_role: configure_vm
, ansible_host
, ssh vm_ip somecommand
,… , .
: , - () .
: Openstack' , API ? ?
: . . , , "".
: management_ip
?
: - ( dlink_configure
) - , . , , , .
, - :
) ( - ).
) (delegate_to
).
, , . -, ( ) . . - localhost project-global ( — ). -, -, , all
( all
). WTF , . -, ( -) .
: ansible_host vs FQDN
, inventory_hostname
, ansible_host
, .
, "", , play — , .
""? "connection plugin" , (, , , ). - . ssh ( -), . , : ansible_host
, ansible_user
, ansible_port
. . . , lxc ( lxc-execute
), ?
ansible_host
, inventory_hostname
. — .
:
---
somegroup:
hosts:
somehost:
ansible_host: 254.12.11.10
somehost
— inventory_hostname
. ansible_host
, inventory_hostname
. , , , .
inventory_hostname
, ansible_host
, . , . " " . . , lxc . ssh ( , ) - .
-, ~/.ssh/ssh_config
( , ). , , ssh - . .. ( ) - , ( ) . , jump-, ssh-. , . ssh_config
( ssh_config
), ssh gethostbyname()
. libc, . , , (/etc/nsswitch.conf
, /etc/hosts
) DNS- ( ). , , , DNS-, , CNAME … , .
, , : SSH, ( ) ansible_host
IP-.
, . .
-, host-local (ssh_config
, /etc/hosts
), . -, . CI, . , , - (?) , . ( ), . .
, , . , /etc/hosts . , .
DNS, . DNS ? / , . , , CI? - , DNS- — . . .
, . ansible_host
inventory_hostname
?
" ". setup
:
- name: Ping neighbor
command: ping -c 1 {{ neighbor_ip }} -w 1
changed_when: false
vars:
neighbor_ip: '{{ (hostvars[item].ansible_all_ipv4_addresses|ipaddr(public_network))[0] }}'
with_items: '{{ groups[target_group] }}'
( public_network
, target_group
).
, , . 99% " ". , ansible_host
IP-, . setup
. . ansible_host
IP- , , "- IP ", (!) , IP- "access address" , .. . .
… : , (- ) DNS? , . , , , IP. , .
: ansible_user
: ? , . , .
- - "" ? ,
ansible_user
. - "" ? ,
ansible_user
. - ,
-u
ansible-playbook
, , . . , CI-u
( ), . - . , 'me'. . — m.gavriilicheynko. .
- ,
ansible-playbook -e ansible_user=ci
( CI, ) , ( , ). - " " ( , ),
-u
, .
( , ), ansible_user
"" (.. , ). — ansible_user (, ..), ansible_user
.
, " ", "". , . — , .
Ansible?
-, " " ( hosts
play groups
). -, , . , , ( hosts , ). , , . .
( — , ):
- play. (
hosts
). , 'prometheus' , Prometheus. - - . , , (" " ), , - , , — () .
- .
, , .
— . , , (, play) — . , , .
. — . jc-r4, xcore-lu1 ams1-se-r2, "netflow_collectors". ? , , , , , / , .
. , , — , , , . .
, — . , " ".
— , .
— play. , play ( — docker). , play ( ), , play.
. — .
:
---
foo:
hosts:
foo1:
foo2:
bar:
hosts:
bar1
foobar:
children:
foo:
bar:
— . play - . ( , , , , , , grafana-servers mons — mgrs ).
" mgrs mons" . DRY (do not repeat yourself, ) , .
.
— - , "" . group_by
add_host
.
, . , ( ). , , . , — . — , . , --limit
. group_by
, , .. --limit
. [always], . , group_by
— , inventory . .
, "" (.. ). , — ? ( "", hashmap, map, object, ..). , . , ( 2.4 play: order
, inventory
).
? , :
-
groups.somegroup[0]
" ". , , . . . - (,
pg_hba.conf
,allowed
nginx.conf
, etc). , changed. , reload', changed . - , , .
, "", .
. , openstack', Openstack, , , . ( , , — , ""). . . ( ) . - -. , . , staging . , - - . --, , . - . , . - - ? , "". ? , . … , . IP, . , . . , .
, , , , , . , , - , .
:
— . , , . play , ( DRY) , "" (variable precedence). , , , .
… : ?
. — . , ( jinja). "". "" ?
- "", - "", - "". ( ""). , ( ). , — .
"" . , , ansible_host
, hostvars .. ( , , ). .
, , ( ) "", ( ) — "". , .
… . , , , ( best practices, — , ). "" , , , , .
" " . . DRY , , — - . .
: , java- , ?
: , (, ), . — staging production, .
: localhost, ( nginx proxy_pass
), ?
: , .
: — ?
: , . , , — .
, . , : " "? , — , .
, . ?
, " ".
— . production.yaml
, staging.yaml
, production/
staging/
, , . () . " " . . , . , " " ( , , , etc).
— . - git , , , - git . , . - (ansible, ceph, openshift, etc) . , . API, "" . , , , , .
. , . ( , , ). "" — () , (, , ceph-ansible' RGW ).
— ( ). , . CI — . — . — , , . DRY, . . .
. , — 3000 10 , , — , CI.
— . , , , , .
.
ansible-playbook -i inventory1.yaml -i inventory2.yaml play.yaml
" ". - ( ), (, inventory2.yaml
users: [...]
, inventory1.yaml
).
? , , , .
: (host_vars/
, group_vars
). , ( ) (). Edge case, .
" " / . , , , , , . " ". .
: