Arbeiten Sie gemäß dem Excel-Verfahrenshandbuch! Ich habe auf einer Website gesehen, dass Ansible verwendet werden kann, um die Realität zu ändern, und habe versucht, sie in Kombination mit Docker zu überprüfen. Während der Überprüfung habe ich festgestellt, dass ssh nicht erforderlich ist, wenn ich ** "Docker-Verbindungs-Plugin für Ansible" ** als Verbindungsmethode zum Container verwende. Daher habe ich mir eine Notiz gemacht, bis ich nach dem Ändern eine Verbindung herstellen kann.
os: centos7 ansible: 2.9.13 docker: 19.03.13 docker-compose: 1.26.2
Die Installation jeder Mitte entfällt, da verschiedene Personen für die Öffentlichkeit zugänglich sind.
# OS
FROM centos:centos7
# pkg install
RUN yum install -y epel-release && \
yum update -y && \
yum install -y openssh-server openssh-clients sshpass && \
yum install -y net-tools vim
ENV LANG ja_JP.UTF-8
# root password
RUN echo password | passwd --stdin root
# # sshd_config edit
RUN sed -ri "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
RUN systemctl enable sshd.service
CMD ["/sbin/init"]
Bereiten Sie einen Container für die Verbindung mit ansible vor (ich habe ihn erstellt, weil ich zuerst versucht habe, ssh zu verwenden).
version: '3.7'
services:
srv1:
build:
context: .
dockerfile: srv-dockerfile
hostname: srv1
container_name: srv1
environment:
- TZ=Asia/Tokyo
restart: always
tty: true
networks:
app_net:
ipv4_address: 172.16.238.101
srv2:
build:
context: .
dockerfile: srv-dockerfile
hostname: srv2
container_name: srv2
environment:
- TZ=Asia/Tokyo
restart: always
tty: true
networks:
app_net:
ipv4_address: 172.16.238.102
#NW-Einstellung für feste IP-Zuweisung
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
Ich habe ** feste IP ** gegeben, weil es für ssh praktisch zu sein scheint.
# docker-compose up -d
Starting srv1 ... done
Starting srv2 ... done
[testGrp]
172.16.238.101
172.16.238.102
- name: start up a docker container
hosts: localhost
tasks:
- name: start up a docker container by running bash
command: docker-compose -f /srv/ansible/docker-compose.yml up -d
tags:
- never # docker-"immer" in komponieren:Da dort "Neustart" steht, habe ich dafür gesorgt, dass es nicht normal funktioniert
- name: connection test
hosts: testGrp
connection: docker #Festlegen der Verwendung des Verbindungs-Plugins
tasks:
- name: ping
ping:
# ansible-playbook -i hosts test-ansible.yml --check --diff
PLAY [start up a docker container] ***********************************************************************************************************************************
PLAY [connection test] ***********************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************
fatal: [172.16.238.101]: UNREACHABLE! => {"changed": false, "msg": "Failed to create temporary directory.In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo ~/.ansible/tmp `\"&& mkdir \"` echo ~/.ansible/tmp/ansible-tmp-1602479114.98-3164-90901945313893 `\" && echo ansible-tmp-1602479114.98-3164-90901945313893=\"` echo ~/.ansible/tmp/ansible-tmp-1602479114.98-3164-90901945313893 `\" ), exited with result 1", "unreachable": true}
fatal: [172.16.238.102]: UNREACHABLE! => {"changed": false, "msg": "Failed to create temporary directory.In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo ~/.ansible/tmp `\"&& mkdir \"` echo ~/.ansible/tmp/ansible-tmp-1602479115.05-3165-268763785818242 `\" && echo ansible-tmp-1602479115.05-3165-268763785818242=\"` echo ~/.ansible/tmp/ansible-tmp-1602479115.05-3165-268763785818242 `\" ), exited with result 1", "unreachable": true}
PLAY RECAP ***********************************************************************************************************************************************************
172.16.238.101 : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
172.16.238.102 : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
Ich habe sicher versagt. Es bestand die Möglichkeit, dass die Fehlermeldung nicht die Berechtigung des tmp-Ordners hatte, aber es gibt keine unzureichende Berechtigung für Ping und hat sie verlassen.
# docker-compose ps
Name Command State Ports
---------------------------------
srv1 /sbin/init Up
srv2 /sbin/init Up
# docker inspect srv1 | grep IPv4Address
"IPv4Address": "172.16.238.101"
# ping 172.16.238.101
PING 172.16.238.101 (172.16.238.101) 56(84) bytes of data.
64 bytes from 172.16.238.101: icmp_seq=1 ttl=64 time=0.133 ms
64 bytes from 172.16.238.101: icmp_seq=2 ttl=64 time=0.134 ms
Nur für den Fall, dass ich Ping alleine ausgeführt habe, aber da dies erfolgreich war, entschied ich, dass es kein Problem mit dem Container selbst gab.
[testGrp]
#172.16.238.101
#172.16.238.102
srv1
srv2
Wenn ich mir verschiedene Artikel ansehe, die hilfreich sind, stelle ich fest, dass alle Artikel bei Verwendung des Plug-Ins durch "Hostname" angegeben sind (zu diesem Zeitpunkt ist ein halber Tag vergangen). Ändern Sie daher die Zielspezifikationsmethode von "IP" in ** "Containername" **.
# ansible-playbook -i hosts test-ansible.yml --check --diff
PLAY [start up a docker container] ***********************************************************************************************************************************
PLAY [connection test] ***********************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************
ok: [srv2]
ok: [srv1]
TASK [ping] **********************************************************************************************************************************************************
ok: [srv2]
ok: [srv1]
PLAY RECAP ***********************************************************************************************************************************************************
srv1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Erfolg!
Auch wenn Sie nicht genau hinschauen, steht dort "Containername" oder "Hostname" einschließlich des offiziellen. Es war ein Fehler infolge der Überprüfung der SSH-Verbindung, vorausgesetzt, die IP wurde vorerst festgelegt und die IP-angegebene Verbindung war möglich. .. ..
Ich wollte eigentlich alles in einem Container starten, einschließlich Ansible, aber als ich es zu einem Container machte, konnte ich über das entsprechende Plug-In nicht auf andere Container zugreifen, also habe ich es vorerst direkt auf dem Host installiert. Es gab einen Artikel, der besagte, dass Sie DooD verwenden können, aber aus irgendeinem Grund hat der Container es nicht erkannt und Sie konnten den Docker-Befehl nicht verwenden. .. .. Nun, die Hauptleitung ist nicht da, also später.
Recommended Posts