C'est devenu beaucoup plus pratique (mon style d'écriture est plus ancien) que l'ancienne version, donc un mémo quand j'ai basculé la gestion de mon fichier dot sur ansible et essayé diverses choses
En regardant divers référentiels, il semble que ansible soit écrit avec différentes structures de répertoires, mais le document officiel [Disposition du répertoire](http://docs.ansible.com/ansible/playbooks_best_practices.html#directory- Puisqu'il est décrit dans la mise en page), écrivons (ou visons) avec une structure de répertoires qui y fait référence
Il existe divers problèmes qui ne peuvent être résolus par les modules seuls.
Bien que décrit dans
Si c'est un playbook que vous avez écrit, il s'agit d'un changement dont vous n'avez pas à vous soucier. Vous pouvez juger immédiatement en regardant le résultat de l'exécution d'ansible, mais si vous obtenez un changement lorsque quelqu'un d'autre exécute ce playbook, vous vous demanderez, "Oh, quelque chose a changé?" Je pense qu'il est souhaitable que le changement ne change que lorsque le comportement du système d'exploitation cible change.
Sinon, le changement devient effrayant, et il devient impossible d'écrire des tâches communes en production, mise en scène, développement, etc., et le processus de réalisation des tâches en fonction de chaque environnement commence. À ce stade, la "sauce secrète" devrait être assez avancée. J'ai l'impression de ne pas savoir à quoi ça sert.
C'est une histoire rapide, mais de changed_when [when](http: //docs.ansible. com / ansible / playbooks_error_handling.html # controller-what-defining-failure) semble souvent plus rapide pour exécuter des playbooks, alors utilisez (Peut-être chaged_when a l'impression de faire une action, puis une décision quand. Je suis désolé si c'est faux.)
`quand:" ansible_os_family == '{uname}' "`
Par exemple, si vous limitez le système d'exploitation cible à OSX lors de l'écriture de la tâche pour installer nkf, vous écrirez comme ceci
roles/nkf/install/tasks/main.yml
- name: Install the nkf from homebrew
homebrew: name=nkf state=present
Mais nkf est également nécessaire pour le système d'exploitation invité, non? Si vous écrivez ceci afin de ne pas créer de rôles inutiles lorsque cela se produit, vous pouvez garantir la même opération à différents systèmes d'exploitation avec un rôle.
roles/nkf/install/tasks/main.yml
- name: Install the nkf from homebrew
homebrew: name=nkf state=present
when: "ansible_os_family == 'Darwin'"
- name: Install the nkf from yum
yum: pkg=nkf state=present
when: "ansible_os_family == 'RedHat'"
Il existe ignore_errors car vous pouvez l'ignorer même si une erreur se produit.
"répugnant····"
Ou plutôt, si ignore_errors se produit lors de l'exécution du playbook, échoué est affiché à l'écran.
Quelque chose de rouge apparaît sur la console, même si ce n'est pas possible.
Ce que vous voulez faire avec ignore_errors est d'ignorer l'échec, donc si vous l'ignorez, ne provoquez pas d'échec
failed_when: no
Écrivons. De cette façon, vous ne serez pas échoué sur la console.
Par exemple, chrome est requis lors de l'installation de chrome-cli qui exploite chrome avec CUI.
La façon d'écrire la tâche dans ce cas est comme ça
roles/homebrew/brew/chrome-cli/tasks/main.yml
- name: Install the chrome-cli in the brew.
homebrew: name=chrome-cli state=present
when: "ansible_os_family == 'Darwin'"
Installez simplement chrome-cli avec homebrew
roles/homebrew/brew-cask/google-chrome/tasks/main.yml
- name: Install the google-chrome in the brew-cask
homebrew_cask: name=google-chrome state=present
when: "ansible_os_family == 'Darwin'"
Installez simplement google-chrome avec homebrew-cask
homebrew/brew/chrome-cli/meta/main.yml
dependencies:
- { role: homebrew/brew-cask/google-chrome }
chrome-cli
├── meta
│ └── main.yml
└── tasks
└── main.yml
google-chrome
└── tasks
└── main.yml
Ecrivez deux rôles et décrivez les dépendances dans meta
Comme le dit le titre. Pour mémo personnel
J'oublie souvent cela et regarde souvent la documentation du module ansible, donc mon propre mémo
Si vous regardez les [exemples] ci-dessus (http://docs.ansible.com/ansible/stat_module.html#examples), vous pouvez faire la plupart des choses.
Je l'ajouterai s'il y a une note supplémentaire.
Recommended Posts