146 lines
4.0 KiB
YAML
146 lines
4.0 KiB
YAML
- name: Clone SSH repos, inject private key, build and run container
|
|
hosts: docker_host
|
|
remote_user: ubuntu
|
|
gather_facts: false
|
|
become: yes
|
|
become_method: sudo
|
|
become_user: root
|
|
|
|
vars:
|
|
ansible_remote_tmp: /tmp/.ansible-{{ ansible_user_id }}
|
|
main_br: "{{ lookup('env', 'MAIN_BR') | default('main', true) }}"
|
|
env_br: "{{ lookup('env', 'ENV_BR') | default('main', true) }}"
|
|
playbook_file: "{{ lookup('env', 'PLAYBOOK_FILE') | default('base.yaml') }}"
|
|
ssh_private_key: "{{ lookup('env', 'SSH_PRIVATE_KEY') }}"
|
|
|
|
base_dir: "/home/ubuntu"
|
|
repo_core_url: "git@git.felcloud.io:felcloud/ansible_core_init_ansible.git"
|
|
repo_env_url: "git@git.felcloud.io:felcloud/ansible_env_staging.git"
|
|
|
|
repo_core_dir: "{{ base_dir }}/ansible_core_init_ansible"
|
|
repo_env_dir: "{{ base_dir }}/ansible_env_staging"
|
|
|
|
tasks:
|
|
- name: Remove existing core repo
|
|
ansible.builtin.file:
|
|
path: "{{ repo_core_dir }}"
|
|
state: absent
|
|
|
|
- name: Remove existing env repo
|
|
ansible.builtin.file:
|
|
path: "{{ repo_env_dir }}"
|
|
state: absent
|
|
|
|
- name: Clone core repo via SSH
|
|
ansible.builtin.git:
|
|
repo: "{{ repo_core_url }}"
|
|
dest: "{{ repo_core_dir }}"
|
|
version: "{{ main_br }}"
|
|
accept_hostkey: yes
|
|
force: yes
|
|
|
|
- name: Debug directory contents after core repo clone
|
|
ansible.builtin.command:
|
|
cmd: ls -la "{{ repo_core_dir }}"
|
|
register: core_dir_after_clone
|
|
|
|
- debug:
|
|
var: core_dir_after_clone.stdout_lines
|
|
|
|
- name: Clone env repo via SSH
|
|
ansible.builtin.git:
|
|
repo: "{{ repo_env_url }}"
|
|
dest: "{{ repo_env_dir }}"
|
|
version: "{{ env_br }}"
|
|
accept_hostkey: yes
|
|
force: yes
|
|
|
|
- name: Debug directory contents after env repo clone
|
|
ansible.builtin.command:
|
|
cmd: ls -la "{{ repo_env_dir }}"
|
|
register: env_dir_after_clone
|
|
|
|
- debug:
|
|
var: env_dir_after_clone.stdout_lines
|
|
|
|
- name: Check if core repo dir exists and permissions
|
|
ansible.builtin.stat:
|
|
path: "{{ repo_core_dir }}"
|
|
register: core_dir_stat
|
|
|
|
- debug:
|
|
var: core_dir_stat
|
|
|
|
- name: Check if env repo dir exists and permissions
|
|
ansible.builtin.stat:
|
|
path: "{{ repo_env_dir }}"
|
|
register: env_dir_stat
|
|
|
|
- debug:
|
|
var: env_dir_stat
|
|
|
|
- name: List contents of core repo directory
|
|
ansible.builtin.command:
|
|
cmd: ls -la "{{ repo_core_dir }}"
|
|
register: repo_core_ls
|
|
|
|
- debug:
|
|
var: repo_core_ls.stdout_lines
|
|
|
|
- name: List contents of env repo directory
|
|
ansible.builtin.command:
|
|
cmd: ls -la "{{ repo_env_dir }}"
|
|
register: repo_env_ls
|
|
|
|
- debug:
|
|
var: repo_env_ls.stdout_lines
|
|
|
|
- name: List repo core directory tree (recursive)
|
|
ansible.builtin.command:
|
|
cmd: find "{{ repo_core_dir }}"
|
|
register: repo_core_tree
|
|
failed_when: false
|
|
changed_when: false
|
|
|
|
- debug:
|
|
var: repo_core_tree.stdout_lines
|
|
|
|
- name: List repo env directory tree (recursive)
|
|
ansible.builtin.command:
|
|
cmd: find "{{ repo_env_dir }}"
|
|
register: repo_env_tree
|
|
failed_when: false
|
|
changed_when: false
|
|
|
|
- debug:
|
|
var: repo_env_tree.stdout_lines
|
|
|
|
- name: Inject SSH private key into custom_files/id_rsa
|
|
ansible.builtin.copy:
|
|
content: "{{ ssh_private_key }}"
|
|
dest: "{{ repo_core_dir }}/custom_files/id_rsa"
|
|
mode: '0600'
|
|
|
|
- name: Build the Docker image from core repo
|
|
community.docker.docker_image:
|
|
name: ansible-pulumi
|
|
tag: local
|
|
source: build
|
|
build:
|
|
path: "{{ repo_core_dir }}"
|
|
args:
|
|
branch: "{{ main_br }}"
|
|
nocache: true
|
|
|
|
- name: Run the admin container
|
|
community.docker.docker_container:
|
|
name: admin-ansible-run
|
|
image: ansible-pulumi:local
|
|
command: bash
|
|
tty: true
|
|
interactive: true
|
|
auto_remove: true
|
|
volumes:
|
|
- "{{ repo_env_dir }}:/home/cloud/ansible_env_staging"
|
|
|