Document officiel --Utilisation de variables
Il semble qu'il puisse être décrit à la fois au format de fichier ini et au format YAML. S'agit-il d'un fichier d'inventaire ...?
#format ini
[atlanta]
host1
host2
[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
#Format YAML
atlanta:
hosts:
host1:
host2:
vars:
ntp_server: ntp.atlanta.example.com
proxy: proxy.atlanta.example.com
En plus de définir des variables dans l'inventaire, vous pouvez également définir des variables d'hôte et de groupe.
Dans ce cas, il semble nécessaire d'utiliser le format YAML.
Créez un fichier de nom de groupe / nom d'hôte dans les répertoires group_vars
et host_vars
sous le répertoire/ etc / ansible /
et le répertoire courant, et décrivez les paramètres.
/etc/ansible/group_vars/raleigh #L'extension de fichier est'.yml'、 '.yaml', Ou'.json'
/etc/ansible/group_vars/webservers
/etc/ansible/host_vars/foosball
Le fichier de définition de la variable associée au rôle peut être un peu différent. Ou main.yml
.
Je veux également lire ce qui suit.
Documents officiels - Meilleures pratiques
Vous pouvez utiliser loop
ou with_ *
pour effectuer un traitement itératif.
loop
semble être une fonction ajoutée dans la version 2.5 d'Ansible.
Certains modules vous permettent de passer une liste directement à un paramètre, ce qui peut être plus efficace que les tâches en boucle. Lisez le manuel du module.
- name: add several users
user:
name: "{{ item }}"
state: present
groups: "wheel"
loop: # with_items:
- testuser1
- testuser2
- name: add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop: # with_items:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
Si vous souhaitez effectuer une itération en utilisant une variable prédéfinie, spécifiez la variable dans loop
.
Les variables ne peuvent être référencées que si elles sont placées entre «" {{}} "».
Ce que vous devez faire attention est le nom de la variable, et il y a des variables qui sont implicitement déclarées, donc si vous êtes en conflit avec elle, cela ne fonctionnera pas et vous en serez accro. .. .. Comme «groupes».
Vérifiez Variables spéciales dans le document officiel. .. ..
vars:
users:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
- name: add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop: "{{ users }}"
Si vous ne pouvez pas établir de connexion SSH en tant que root, utilisez devenir
pour exécuter la tâche avec des privilèges d'administrateur.
Document officiel - Comprendre l'élévation des privilèges: devenir
Lorsque vous décrivez dans le manuel, décrivez sous la forme suivante.
---
- hosts: all
become: yes
become_user: root
become_method: su
become_flags: '-s /bin/sh'
Ou définissez une variable. Je pense que les variables doivent être spécifiées dans un fichier approprié en fonction du champ d'application.
---
# group_vars/all.yml
ansible_become: yes
ansible_become_method: su
ansible_become_password: somepassword
Il semble que devenir_password
ne puisse pas spécifier de hachage de mot de passe.
Si vous souhaitez protéger les données sensibles, utilisez Ansible Vault.
DRY-RUN
Exécutez avec l'option --check
.
Il existe également une option --diff
, mais quelle est la différence ...
Exécutez avec l'option --syntax-check
.
Exécutez avec l'option --list-tasks
.
ʻExécuter la commande ansible-playbookavec l'option
--start-at-task. Ajoutez l'option
--step` à l'étape.
ansible-playbook -i hosts -l hostname site.yml --start-at-task="some task name" --step
Recommended Posts