Puncte:0

How to create a SSH connection between Ansible and Jenkins containers

drapel uz

I'm new to Jenkins.

My goal is to create a Jenkins job\pipeline that will activate a group of ansible's playbook files - which will create a long installation of my tested product.

I build 2 containers in Docker desktop (Windows): Ansible and Jenkins.

Below Ansible docker-compose.yml file:

version: '2'
services:
  ansible:
    container_name: ansible
    hostname: ansible
    image: ansible
    volumes:
      - ~/product/ansible:/ansible
    working_dir: /ansible
    build:
      context: .
      dockerfile: Dockerfile
    dns:
      - 200.20.0.20
    networks:
    - network

networks:
  network:
    external: true

Below Jenkins docker-compose.yml file:

version: '3.7'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins:lts
    privileged: true
    user: root
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    volumes:
    - ~/r10_core/jenkins:/jenkins
    networks:
    - network

networks:
  network:
    external: true

Ansible and Jenkins are on the same Network Id. So, ping command is working from Ansible to Jenkins and vis versa. Both containers have access to Internet.

I set username and password admin | admin and installed the following plugins in Jenkins container through Jenkins site > Manage Jenkins > Manage Plugins:

  • Ansible plugin
  • SSH
  • Publish by SSH

I checked the SSH services in both machines.

Ansible:

[root@ansible ansible]# ssh 172.20.0.2
ssh: connect to host 172.20.0.2 port 22: Connection refused
[root@ansible ansible]# service --status-all
bash: service: command not found
[root@ansible ansible]# systemd
bash: systemd: command not found
[root@ansible ansible]# systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[root@ansible ansible]#

Jenkins:

root@jenkins:/# ssh 172.20.0.3
ssh: connect to host 172.20.0.3 port 22: Connection refused
root@jenkins:/# service --status-all
 [ ? ]  hwclock.sh
root@jenkins:/#

I got a Connection refused also when trying to connect to the machines themselves

a) What should I configure in the Ansible container in order SSH to be active? b) What should I configure in the Jenkins container in order SSH to be active? c) What should I configure in each container in order them talk each other through SSH (i.e port 22)?

RVT avatar
drapel it
RVT
Cred că această întrebare ar trebui reformulată. Nu este clar ce *încerci să faci*, aici. „Containere separate” este **o** problemă, în timp ce crearea sau generarea automată a unei comenzi `ansible-playbook` sau `ansible` este foarte diferită. (TLDR; Locurile de muncă pot, de asemenea, intra-comunica într-o oarecare măsură - mai mult cu „un pic de imaginație”)
drapel uz
@RVT mulțumesc pentru răspuns. Am concentrat întrebarea pe o problemă - conexiunea SSH între containerele Ansible și Jenkins
drapel in
Ați înțeles greșit conceptul de containere. Ceea ce vrei sunt VM-uri.
drapel uz
@GeraldSchneider Principiul în containere este că fiecare container efectuează un singur serviciu și într-un mod bun. Vreau ca serviciul Jenkins să consume un serviciu Ansible. Este posibil? Dacă da, puteți indica acest lucru ca răspuns la postare, dacă nu - vă rugăm să vă clarificați poziția cu privire la motivul pentru care o astfel de definiție nu este posibilă. Mulțumiri.
RVT avatar
drapel it
RVT
@Hiddai... nu există un „container Jenkins”, cu excepția cazului în care vorbiți despre containere gestionate de Jenkins, sub Docker sau alt furnizor de containere. Conexiunile SSH între o gazdă și alta sunt o problemă destul de bine înțeleasă (indiciu: uitați-vă la cheile ssh-agent și ssh)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.