Un outil qui automatise la construction de serveurs sans agents. ――Il se connecte à la machine exécutant sshd avec SSH et crée l'environnement.
Ecrivez le fichier de configuration en YAML. Aucune connaissance en programmation (Ruby, Python, etc.) n'est requise. Il est plus facile que le chef et la marionnette de construire un serveur avec plusieurs à des dizaines d'unités.
playbook.yml
---
- hosts: all
remote_user: ec2-user
become: true
vars:
version: 2.9.0
prefix_dir: /usr/local
src_dir: "{{ prefix_dir }}/src"
bin_dir: "{{ prefix_dir }}/bin"
tasks:
- name: original git exist check
stat: path={{ bin_dir }}/git
register: exist_git
- debug: msg="git not installed."
when: exist_git.stat.exists == false
- name: original git version check
command: "{{ bin_dir }}/git --version warn=false"
register: org_version
changed_when: false
when: exist_git.stat.exists == true
- name: install dependences
yum: name={{ item }}
with_items:
- curl-devel
- expat-devel
- gettext-devel
- openssl-devel
- zlib-devel
- gcc
- perl-ExtUtils-MakeMaker
when: (exist_git.stat.exists == false) or
(exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")
- name: make download dir
file: path={{ src_dir }} state=directory owner=root group=root mode=755
when: (exist_git.stat.exists == false) or
(exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")
- name: download git version {{ version }}
unarchive:
src: https://www.kernel.org/pub/software/scm/git/git-{{ version }}.tar.gz
dest: "{{ src_dir }}"
copy: no
when: (exist_git.stat.exists == false) or
(exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")
- name: make all
make:
chdir: "{{ src_dir }}/git-{{ version }}"
target: all
params:
prefix: "{{ prefix_dir }}"
when: (exist_git.stat.exists == false) or
(exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")
- name: make install
make:
chdir: "{{ src_dir }}/git-{{ version }}"
target: install
params:
prefix: "{{ prefix_dir }}"
when: (exist_git.stat.exists == false) or
(exist_git.stat.exists == true and org_version.stdout != "git version {{ version }}")
L'exécution est la suivante.
$ ansible-playbook playbook.yml
Je fais git --version
dans le module command
, mais le comportement par défaut d'Ansible me prévient d'utiliser le module git
. Le module git
d'Ansible n'a pas de paramètre pour obtenir la version exécutable. Donc, pour l'instant, j'utilise le module command
pour obtenir la version et spécifie warn = false
pour supprimer l'avertissement me demandant d'utiliser le module git
.
Modules de contrôle de code source --git (lien)
La partie répétée du même jugement conditionnel de when
est plus intelligente si elle est stockée dans une variable en utilisant le module set_fact
.
Veuillez vous référer aux articles suivants pour la gestion de «devenir» et PATH. Définissez un PATH équivalent à "sudo su-" à l'aide de l'environnement d'Ansible
Le module make d'Ansible deviendra "chenged" chaque fois qu'il sera exécuté tel quel.
Je veux qu'il soit «changé» lorsque j'exécute le PlayBook pour la première fois, mais je veux qu'il soit «ok» au lieu de «changé» lorsque je relance le même PlayBook.
Cependant, si vous spécifiez changed_when: False
, ce sera ʻok même si le changement a été effectué lors de la première exécution, vous devriez donc éviter de spécifier
changed_when: False. Donc, cette fois, j'ai ajouté une fonction de vérification de version qui combine
register et
when`.
La combinaison de «une archive» et de «https» était l'auteur-compositeur.
Cela fonctionnait bien sur Amazon Linux, mais cela ne fonctionnait pas lorsque j'ai configuré le proxy dans un environnement authentifié par proxy. Probablement parce que vous n'avez pas spécifié d'invalider le certificat SSL.
Le module ʻunarchivea une option
validate_certs, et c'est OK si vous spécifiez
validate_crets = no, mais cette option n'est pas prise en charge sauf si c'est Ansible ver.2.2 ou une version ultérieure. Dans l'environnement avant Ansible ver.2.1, il était nécessaire de télécharger avec la combinaison de
get_url,
httpset
validate_crets = no`.
Cette fois, j'ai essayé d'installer Git à partir de la source, mais si vous installez un package qui n'est pas publié par rpm à partir de la source, il semble que ce PlayBook puisse être appliqué.
Eh bien.
Recommended Posts