Ich habe versucht, ansible zu berühren, also werde ich es zusammenfassen. Dies ist ein Beispiel für die lokale Ausführung der httpd-Installation, die Starteinstellungen, die Konfiguration nach Umgebung und das erneute Laden von httpd. Nach dem Einrichten des Servers wünschte ich, ich könnte die ansible Umgebung vorbereiten und die gewünschte Umgebung mit einem einzigen Befehl erstellen (mit den Optionen dev oder stg).
Lesen Sie einige Artikel, die ich gegoogelt habe, wie "Einführung in ansible" Einführung in Ansible - Qiita Probieren Sie die LAMP-Umgebung vorerst mit Ansible aus - Tagebuch --yk5656 Ansible Tutorial mit Role | Developers.IO
Zumindest scheint Folgendes verfügbar zu sein.
Ist es möglich, die Inventardatei wegzulassen und in einer Datei zu verwalten? Ich kämpfte, aber ich konnte es nicht reproduzieren, und es scheint veraltet zu sein. (Mit Optionen kann etwas getan werden, wenn Befehle wie Fabric ausgeführt werden.)
Es scheint einen Fall zu geben. [Ansible] Ausführen eines ansible-Befehls ohne Verwendung der Inventardatei | Developers.IO
Die Installation erfolgt über yum oder sudo. Da die vorhandene Umgebung für jedes Verzeichnis mit pyenv + virtualenv abgeschnitten ist, habe ich sie von pip eingeführt.
sh
#von yum
$ sudo yum install epel-release
$ sudo yum install ansible
#In diesem Fall die später beschriebene Inventardatei(/etc/ansible/hosts)Scheint in der Lage zu sein, es alleine zu tun
#von pip(Python Voraussetzung ist, dass es im Voraus eine Umgebung gibt)
$ pip install ansible
Vorbereitung der Inventardatei (Es scheint, dass / etc / ansible / hosts standardmäßig gelesen wird)
/home/hoge/ansible/hosts
[all]
localhosts ansible_connection=local
Playbook-Vorbereitung
/home/hoge/ansible/main.yaml
---
- hosts: localhosts
sudo: yes
tasks:
- name: install httpd
yum: name=httpd state=present
- name: start httpd service
service: name=httpd state=started enabled=yes
- name: setup stg conf file
template: src=stg-hoge.j2 dest=/etc/httpd/conf.d/hoge.conf
notify: httpd restart
when: conf_env == "stg"
- name: setup dev conf file
template: src=dev-hoge.j2 dest=/etc/httpd/conf.d/hoge.conf
notify: httpd restart
when: conf_env == "dev"
- name: httpd start confirm
wait_for: port=80 delay=1
handlers:
- name: httpd restart
action: service name=httpd state=reloaded
Vorlagenvorbereitung für conf für jede Umgebung (Diesmal ist es eine Probe, also ist alles in Ordnung)
bash
# /home/hoge/Ansible bzw. unten
$ cat dev-hoge.j2
<VirtualHost *:80>
DocumentRoot /www/public/dev-html
ServerName www.example.com
</VirtualHost>
$ cat stg-hoge.j2
<VirtualHost *:80>
DocumentRoot /www/public/stg-html
ServerName www.example.com
</VirtualHost>
Versuche zu rennen
bash
#Fragen Sie nach dem Sudo-Pfad, welches Spielbuch ausgeführt werden soll?, Spezifikation der Ausführungsvariablen, Spezifikation der Inventardatei
$ ansible-playbook main.yaml --ask-sudo-pass --extra-vars "conf_env=stg" -i hosts
SUDO password:
PLAY [localhosts] *************************************************************
GATHERING FACTS ***************************************************************
ok: [localhosts]
TASK: [install httpd] *********************************************************
ok: [localhosts]
TASK: [start httpd service] ***************************************************
ok: [localhosts]
TASK: [setup stg conf file] ***************************************************
ok: [localhosts]
TASK: [setup dev conf file] ***************************************************
skipping: [localhosts]
TASK: [httpd start confirm] ***************************************************
ok: [localhosts]
PLAY RECAP ********************************************************************
localhosts : ok=5 changed=0 unreachable=0 failed=0
$ ansible-playbook main.yaml --ask-sudo-pass --extra-vars "conf_env=dev" -i hosts
SUDO password:
PLAY [localhosts] *************************************************************
GATHERING FACTS ***************************************************************
ok: [localhosts]
TASK: [install httpd] *********************************************************
ok: [localhosts]
TASK: [start httpd service] ***************************************************
ok: [localhosts]
TASK: [setup stg conf file] ***************************************************
skipping: [localhosts]
TASK: [setup dev conf file] ***************************************************
ok: [localhosts]
TASK: [httpd start confirm] ***************************************************
ok: [localhosts]
PLAY RECAP ********************************************************************
localhosts : ok=5 changed=0 unreachable=0 failed=0
Herzlichen Glückwunsch zur Tatsache, dass dev oder stg bei der Ausführung des Befehls als Option angegeben wird.
Führen Sie "Aufgaben" aus, die den "Hosts" der Umgebungseinheit zugeordnet sind.
Sie können "sudo" für "hosts" angeben.
main.yaml
#Laufen Sie mit sudo auf localhosts
- hosts: localhosts
sudo: yes
main.yaml
#httpd, bis Sie den Prozessstart und den Autostart installieren und aktivieren
tasks:
- name: install httpd
yum: name=httpd state=present
- name: start httpd service
service: name=httpd state=started enabled=yes
...
Siehe die jinja2-Datei (.j2) in der Vorlage Darunter können Sie einen Zweig für die nächste Aufgabe angeben, wenn eine Änderung in dieser Aufgabe mit Benachrichtigung auftritt oder in welcher Situation sie überhaupt ausgeführt werden soll.
main.yaml
###Conf Platzierung für stg
- name: setup stg conf file
template: src=stg-hoge.j2 dest=/etc/httpd/conf.d/hoge.conf
notify: httpd restart
when: conf_env == "stg"
Der durch notify angegebene "Httpd-Neustart" wird als Handler wie eine Hilfsaufgabe angegeben
main.yaml
#Als Handler"httpd restart"Definieren
handlers:
- name: httpd restart
action: service name=httpd state=reloaded
--Vars können auch Variablen in main.yaml einbetten --main.yaml kann die Wiederverwendbarkeit verbessern, indem jede Aufgabe als separate Datei eingefügt wird
Referenz: Versuchen Sie es mit Ansibles Playbook-Akishin999s Tagebuch Iroha zum Erstellen des Ansible-Moduls --Nulab Inc. Passwortauthentifizierung mit Ansible & Root-Ausführung mit su-Qiita
Ich konnte schnell tun, was ich wollte, aber ich bin immer noch in der Einführungsphase, also frage ich mich, ob es in Zukunft passieren wird.
--Gut? ――Es ist gut, 2 Dateien oder das Minimum zu erstellen
das ist alles.
Recommended Posts