diff --git a/ce-dev/ansible/vars/provision/ce_provision.yml b/ce-dev/ansible/vars/provision/ce_provision.yml index d2476fe0f..4819f04c5 100644 --- a/ce-dev/ansible/vars/provision/ce_provision.yml +++ b/ce-dev/ansible/vars/provision/ce_provision.yml @@ -1,4 +1,5 @@ # Common vars for local development. +_ce_provision_username: "ce-dev" ce_provision: username: "ce-dev" own_repository: "https://github.com/codeenigma/ce-provision.git" diff --git a/install.sh b/install.sh index c47d96562..30f57ebc2 100755 --- a/install.sh +++ b/install.sh @@ -136,7 +136,7 @@ echo "-------------------------------------------------" su - "$CONTROLLER_USER" -c "/usr/bin/python3 -m venv /home/$CONTROLLER_USER/ce-python" su - "$CONTROLLER_USER" -c "/home/$CONTROLLER_USER/ce-python/bin/python3 -m pip install --upgrade pip" su - "$CONTROLLER_USER" -c "/home/$CONTROLLER_USER/ce-python/bin/pip install ansible netaddr python-debian" -su - "$CONTROLLER_USER" -c "/home/$CONTROLLER_USER/ce-python/bin/ansible-galaxy collection install ansible.posix --force" +su - "$CONTROLLER_USER" -c "/home/$CONTROLLER_USER/ce-python/bin/ansible-galaxy -p /home/$CONTROLLER_USER/.ansible/collections/ansible_collections collection install ansible.posix --force" if [ "$AWS_SUPPORT" = "true" ]; then su - "$CONTROLLER_USER" -c "/home/$CONTROLLER_USER/ce-python/bin/pip install boto3" fi @@ -193,6 +193,7 @@ ce_provision: repo: https://github.com/vlcty/ansible-systemd-timers.git branch: master galaxy_custom_requirements_file: "" + galaxy_installation_path: "/home/{{ _ce_provision_username }}/.ansible/collections/ansible_collections" upgrade_galaxy: enabled: true command: "/home/${CONTROLLER_USER}/ce-python/bin/ansible-galaxy collection install --force" diff --git a/roles/debian/ce_deploy/ansible.cfg b/roles/debian/ce_deploy/ansible.cfg index d1191e163..f3117748d 100644 --- a/roles/debian/ce_deploy/ansible.cfg +++ b/roles/debian/ce_deploy/ansible.cfg @@ -65,7 +65,10 @@ inventory = hosts # inject_facts_as_vars = True # additional paths to search for roles in, colon separated -roles_path = roles +roles_path = roles:/home/controller/.ansible/roles:/home/controller/ce-provision/roles + +# additional paths to search for collections in, colon separated +collections_path = /home/controller/.ansible/collections # uncomment this to disable SSH key host checking # @todo We probably want to accept new keys, but fail on changes. diff --git a/roles/debian/ce_deploy/defaults/main.yml b/roles/debian/ce_deploy/defaults/main.yml index dfccea372..061e08fc6 100644 --- a/roles/debian/ce_deploy/defaults/main.yml +++ b/roles/debian/ce_deploy/defaults/main.yml @@ -26,7 +26,9 @@ ce_deploy: groups: [] # File containing default roles and collections to install via Ansible Galaxy. # Roles will be installed to $HOME/.ansible/roles for the provision user. This roles path should be added to your ansible.cfg file. + # Collections will be installed to $HOME/.ansible/collections for the provision user. This collections path should also be added to your ansible.cfg file. galaxy_custom_requirements_file: "/home/{{ _ce_deploy.username }}/ce-deploy/config/files/galaxy-requirements.yml" + galaxy_installation_path: "/home/{{ _ce_deploy.username }}/.ansible/collections/ansible_collections" upgrade_galaxy: enabled: true command: "{{ _venv_path }}/bin/ansible-galaxy collection install --force" # _venv_path in the _init role - must match ce_deploy.venv_path if overridden diff --git a/roles/debian/ce_deploy/tasks/main.yml b/roles/debian/ce_deploy/tasks/main.yml index 447cd99c1..1edcc7007 100644 --- a/roles/debian/ce_deploy/tasks/main.yml +++ b/roles/debian/ce_deploy/tasks/main.yml @@ -183,13 +183,13 @@ - name: Install mandatory ansible-galaxy roles and collections. ansible.builtin.command: - cmd: "{{ _venv_path }}/bin/ansible-galaxy install -r {{ ce_deploy.local_dir }}/requirements-{{ ansible_distribution_major_version }}.yml --force" + cmd: "{{ _venv_path }}/bin/ansible-galaxy install -p {{ ce_deploy.galaxy_installation_path }} -r {{ ce_deploy.local_dir }}/requirements-{{ ansible_distribution_major_version }}.yml --force" become: true become_user: "{{ ce_deploy.username }}" - name: Install custom ansible-galaxy roles and collections. ansible.builtin.command: - cmd: "{{ _venv_path }}/bin/ansible-galaxy install -r {{ ce_deploy.galaxy_custom_requirements_file }} --force" + cmd: "{{ _venv_path }}/bin/ansible-galaxy install -p {{ ce_deploy.galaxy_installation_path }} -r {{ ce_deploy.galaxy_custom_requirements_file }} --force" become: true become_user: "{{ ce_deploy.username }}" when: _ce_deploy_custom_galaxy_requirements.stat.exists @@ -208,7 +208,7 @@ vars: timers: upgrade_ce_deploy_ansible_galaxy_mandatory: - timer_command: "{{ ce_deploy.upgrade_galaxy.command }} -r {{ ce_deploy.local_dir }}/requirements-{{ ansible_distribution_major_version }}.yml" + timer_command: "{{ ce_deploy.upgrade_galaxy.command }} -p {{ ce_deploy.galaxy_installation_path }} -r {{ ce_deploy.local_dir }}/requirements-{{ ansible_distribution_major_version }}.yml" timer_user: "{{ ce_deploy.username }}" timer_OnCalendar: "{{ ce_deploy.upgrade_galaxy.on_calendar }}" when: ce_deploy.upgrade_galaxy.enabled @@ -219,7 +219,7 @@ vars: timers: upgrade_ce_deploy_ansible_galaxy_custom: - timer_command: "{{ ce_deploy.upgrade_galaxy.command }} -r {{ ce_deploy.galaxy_custom_requirements_file }}" + timer_command: "{{ ce_deploy.upgrade_galaxy.command }} -p {{ ce_deploy.galaxy_installation_path }} -r {{ ce_deploy.galaxy_custom_requirements_file }}" timer_user: "{{ ce_deploy.username }}" timer_OnCalendar: "{{ ce_deploy.upgrade_galaxy.on_calendar }}" when: diff --git a/roles/debian/ce_provision/ansible.cfg b/roles/debian/ce_provision/ansible.cfg index d73ed95ac..932994edd 100644 --- a/roles/debian/ce_provision/ansible.cfg +++ b/roles/debian/ce_provision/ansible.cfg @@ -65,7 +65,10 @@ library = modules # inject_facts_as_vars = True # additional paths to search for roles in, colon separated -roles_path = roles +roles_path = roles:/home/controller/.ansible/roles:/home/controller/ce-provision/roles + +# additional paths to search for collections in, colon separated +collections_path = /home/controller/.ansible/collections # uncomment this to disable SSH key host checking # @todo We probably want to accept new keys, but fail on changes. diff --git a/roles/debian/ce_provision/defaults/main.yml b/roles/debian/ce_provision/defaults/main.yml index 863be9952..59ff8bc78 100644 --- a/roles/debian/ce_provision/defaults/main.yml +++ b/roles/debian/ce_provision/defaults/main.yml @@ -37,7 +37,9 @@ ce_provision: branch: master # File containing default roles and collections to install via Ansible Galaxy. # Roles will be installed to $HOME/.ansible/roles for the provision user. This roles path should be added to your ansible.cfg file. + # Collections will be installed to $HOME/.ansible/collections for the provision user. This collections path should also be added to your ansible.cfg file. galaxy_custom_requirements_file: "/home/{{ _ce_provision_username }}/ce-provision/config/files/galaxy-requirements.yml" + galaxy_installation_path: "/home/{{ _ce_provision_username }}/.ansible/collections/ansible_collections" upgrade_galaxy: enabled: true command: "{{ _venv_path }}/bin/ansible-galaxy collection install --force" # _venv_path in the _init role - must match ce_provision.venv_path if overridden diff --git a/roles/debian/ce_provision/tasks/main.yml b/roles/debian/ce_provision/tasks/main.yml index d81941702..9dab0d778 100644 --- a/roles/debian/ce_provision/tasks/main.yml +++ b/roles/debian/ce_provision/tasks/main.yml @@ -226,13 +226,13 @@ - name: Install mandatory ansible-galaxy roles and collections. ansible.builtin.command: - cmd: "{{ _venv_path }}/bin/ansible-galaxy install -r {{ ce_provision.local_dir }}/roles/debian/ce_provision/meta/requirements-{{ ansible_distribution_major_version }}.yml --force-with-deps" + cmd: "{{ _venv_path }}/bin/ansible-galaxy install -p {{ ce_provision.galaxy_installation_path }} -r {{ ce_provision.local_dir }}/roles/debian/ce_provision/meta/requirements-{{ ansible_distribution_major_version }}.yml --force-with-deps" become: true become_user: "{{ ce_provision.username }}" - name: Install custom ansible-galaxy roles and collections. ansible.builtin.command: - cmd: "{{ _venv_path }}/bin/ansible-galaxy install -r {{ ce_provision.galaxy_custom_requirements_file }}" + cmd: "{{ _venv_path }}/bin/ansible-galaxy install -p {{ ce_provision.galaxy_installation_path }} -r {{ ce_provision.galaxy_custom_requirements_file }}" become: true become_user: "{{ ce_provision.username }}" when: _ce_provision_custom_galaxy_requirements.stat.exists @@ -243,7 +243,7 @@ vars: timers: upgrade_ce_provision_ansible_galaxy_mandatory: - timer_command: "{{ ce_provision.upgrade_galaxy.command }} -r {{ ce_provision.local_dir }}/roles/debian/ce_provision/meta/requirements-{{ ansible_distribution_major_version }}.yml" + timer_command: "{{ ce_provision.upgrade_galaxy.command }} -p {{ ce_provision.galaxy_installation_path }} -r {{ ce_provision.local_dir }}/roles/debian/ce_provision/meta/requirements-{{ ansible_distribution_major_version }}.yml" timer_user: "{{ ce_provision.username }}" timer_OnCalendar: "{{ ce_provision.upgrade_galaxy.on_calendar }}" when: ce_provision.upgrade_galaxy.enabled @@ -254,7 +254,7 @@ vars: timers: upgrade_ce_provision_ansible_galaxy_custom: - timer_command: "{{ ce_provision.upgrade_galaxy.command }} -r {{ ce_provision.galaxy_custom_requirements_file }}" + timer_command: "{{ ce_provision.upgrade_galaxy.command }} -p {{ ce_provision.galaxy_installation_path }} -r {{ ce_provision.galaxy_custom_requirements_file }}" timer_user: "{{ ce_provision.username }}" timer_OnCalendar: "{{ ce_provision.upgrade_galaxy.on_calendar }}" when: