Ein Tool, das die Serverkonstruktion ohne Agenten automatisiert. --SSH stellt eine Verbindung zu dem Computer her, auf dem sshd ausgeführt wird, und erstellt die Umgebung. --Schreiben Sie die Konfigurationsdatei in YAML. Es sind keine Programmierkenntnisse (Ruby, Python usw.) erforderlich. ――Es ist einfacher als Koch und Marionette, einen Server mit mehreren bis Dutzenden von Einheiten zu bauen.
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 }}")
Die Ausführung ist wie folgt.
$ ansible-playbook playbook.yml
Ich mache "git --version" im "Befehl" -Modul, aber das Standardverhalten von Ansible warnt mich, das "git" -Modul zu verwenden. Das git
-Modul von Ansible verfügt nicht über einen Parameter zum Abrufen der ausführbaren Version. Daher verwende ich vorerst das "Befehl" -Modul, um die Version abzurufen, und gebe "warn = false" an, um die Warnung zu entfernen, die mich zur Verwendung des "git" -Moduls auffordert.
Quellcodeverwaltungsmodule --git (Link)
Der sich wiederholende Teil derselben bedingten Beurteilung von "wann" ist intelligenter, wenn er mit dem Modul "set_fact" in einer Variablen gespeichert wird.
Informationen zum Umgang mit "Werden" und "PFAD" finden Sie in den folgenden Artikeln. Legen Sie in der Umgebung von Ansible einen Pfad fest, der "sudo su-" entspricht
Das Make-Modul von Ansible wird bei jeder Ausführung "aktiviert".
Ich möchte, dass es beim ersten Ausführen des PlayBook "geändert" wird, aber ich möchte, dass es "in Ordnung" ist, anstatt "geändert", wenn ich dasselbe PlayBook erneut ausführe.
Wenn Sie jedoch "defined_when: False" angeben, ist dies "ok", obwohl die Änderungen bei der ersten Ausführung vorgenommen wurden. Sie möchten daher auch vermeiden, "change_when: False" anzugeben.
Also habe ich dieses Mal eine Versionsprüfungsfunktion hinzugefügt, die register
und when
kombiniert.
Die Kombination von "unarchive" und "https" war der Songwriter. Unter Amazon Linux hat es einwandfrei funktioniert, aber es hat nicht funktioniert, als ich den Proxy in einer Proxy-authentifizierten Umgebung konfiguriert habe. Wahrscheinlich, weil Sie nicht angegeben haben, das SSL-Zertifikat ungültig zu machen. Das Modul "unarchive" verfügt über die Option "validate_certs". Wenn Sie "validate_crets = no" angeben, ist dies in Ordnung. Diese Option wird jedoch nur unterstützt, wenn es sich um Ansible Version 2.2 oder höher handelt. In der Umgebung vor Ansible Version 2.1 war es erforderlich, mit der Kombination von "get_url", "https" und "validate_crets = no" herunterzuladen.
Dieses Mal habe ich versucht, Git von der Quelle aus zu installieren. Wenn Sie jedoch ein Paket installieren möchten, das nicht von RPM aus der Quelle veröffentlicht wurde, kann dieses PlayBook anscheinend angewendet werden.
Na dann.
Recommended Posts