Score:0

How to create a SSH connection between Ansible and Jenkins containers

ธง 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
it flag
RVT
ฉันคิดว่าคำถามนี้ควรจะใช้ถ้อยคำใหม่ ยังไม่ชัดเจนว่าคุณกำลัง *พยายามทำอะไร* จริงๆ ที่นี่ "Separate Containers" คือ **ปัญหาเดียว** ในขณะที่การสร้างหรือสร้างคำสั่ง `ansible-playbook` หรือ `ansible` นั้นแตกต่างกันมาก (TLDR; Jobs อาจสื่อสารภายในได้ในระดับหนึ่ง - มากกว่านั้นด้วย "จินตนาการเล็กน้อย")
uz flag
@RVT ขอบคุณสำหรับการตอบกลับของคุณ ฉันเน้นคำถามไปที่ปัญหาเดียว - การเชื่อมต่อ SSH ระหว่างคอนเทนเนอร์ Ansible และ Jenkins
in flag
คุณเข้าใจแนวคิดของคอนเทนเนอร์ผิด สิ่งที่คุณต้องการคือ VM
uz flag
@GeraldSchneider หลักการในคอนเทนเนอร์คือแต่ละคอนเทนเนอร์ดำเนินการเพียงบริการเดียวและในทางที่ดี ฉันต้องการให้บริการ Jenkins ใช้บริการ Ansible เป็นไปได้ไหม? หากเป็นเช่นนั้น คุณสามารถระบุสิ่งนี้ในการตอบกลับโพสต์ หากไม่มี โปรดชี้แจงจุดยืนของคุณว่าเหตุใดจึงไม่สามารถให้คำนิยามดังกล่าวได้ ขอบคุณ.
RVT avatar
it flag
RVT
@Hiddai... ไม่มีสิ่งที่เรียกว่า "Jenkins container" เว้นแต่ว่าคุณกำลังพูดถึงคอนเทนเนอร์ที่จัดการโดย Jenkins ภายใต้ Docker หรือผู้ให้บริการคอนเทนเนอร์รายอื่น การเชื่อมต่อ SSH ระหว่างโฮสต์หนึ่งกับอีกโฮสต์หนึ่งเป็นปัญหาที่เข้าใจได้ดี (คำใบ้: ดูที่คีย์ ssh-agent และ ssh)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา