c117c1106d
So that we can start running things from the zuul source rather thatn update-system-config and /opt/system-config, we need to install a few things onto the host in install-ansible so that the ansible env is standalone. This introduces a split execution path. The ansible config is now all installed globally onto the machine by install-ansible and does not reference a git checkout. For running ad-hoc commands, an ansible.cfg is introduced inside the root of the system-config dir. So if ansible-playbook is executed with PWD==/opt/system-config it will find that ansible.cfg, it will take precedence, and any content from system-config will take precedence. As a followup we'll make /opt/system-config/ansible.cfg written out by install-ansible from the same template, and we'll update the split to make ansible only work when executed from one of the two configured locations, so that it's clear where we're operating from. Change-Id: I097694244e95751d96e67304aaae53ad19d8b873
171 lines
4.9 KiB
YAML
171 lines
4.9 KiB
YAML
# If ansible_install_version is not defined it should be "latest"
|
|
- name: Set ansible default version to latest
|
|
set_fact:
|
|
install_ansible_version: latest
|
|
when: install_ansible_version is not defined
|
|
|
|
# If a version is not explicitly set we want to make sure to
|
|
# completely omit the version argument to pip, as it will be coming
|
|
# from the long-form install_ansible_name variable. Additionally, if
|
|
# the version is the special value "latest", then we also want to omit
|
|
# any version number, but also set the package state to "latest".
|
|
- name: Set ansible version for installation
|
|
set_fact:
|
|
_install_ansible_version: '{{ install_ansible_version }}'
|
|
when: install_ansible_version not in ('', 'latest')
|
|
|
|
- name: Set ansible package state for installation
|
|
set_fact:
|
|
_install_ansible_state: latest
|
|
when: install_ansible_version == 'latest'
|
|
|
|
- name: Ensure required build packages for non-wheel architectures
|
|
apt:
|
|
update_cache: yes
|
|
name:
|
|
- libffi-dev
|
|
- libssl-dev
|
|
- build-essential
|
|
when: ansible_architecture == 'aarch64'
|
|
|
|
- name: Install ansible
|
|
pip:
|
|
name: '{{ install_ansible_name | default("ansible") }}'
|
|
version: '{{ _install_ansible_version | default(omit) }}'
|
|
state: '{{ _install_ansible_state | default(omit) }}'
|
|
|
|
# For use by k8s_raw ansible module
|
|
# - name: Install openshift client
|
|
# pip:
|
|
# name: 'openshift'
|
|
# TODO(corvus): re-add this once kubernetes 9.0.0 is released
|
|
|
|
# Same version/state default swizzling as described above for
|
|
# openstacksdk
|
|
- name: Set openstacksdk default version to latest
|
|
set_fact:
|
|
install_ansible_openstacksdk_version: latest
|
|
when: install_ansible_openstacksdk_version is not defined
|
|
|
|
- name: Set openstacksdk version for installation
|
|
set_fact:
|
|
_install_ansible_openstacksdk_version: '{{ install_ansible_openstacksdk_version }}'
|
|
when: install_ansible_openstacksdk_version not in ('', 'latest')
|
|
|
|
- name: Set openstacksdk package state for installation
|
|
set_fact:
|
|
_install_openstacksdk_state: latest
|
|
when: install_ansible_openstacksdk_version == 'latest'
|
|
|
|
- name: Install openstacksdk
|
|
pip:
|
|
name: '{{ install_ansible_openstacksdk_name | default("openstacksdk") }}'
|
|
version: '{{ _install_ansible_openstacksdk_version | default(omit) }}'
|
|
state: '{{ _install_openstacksdk_state | default(omit) }}'
|
|
|
|
- name: Ensure /etc/ansible and /etc/ansible/hosts
|
|
file:
|
|
state: directory
|
|
path: /etc/ansible/hosts
|
|
|
|
- name: Ensure /etc/ansible/inventory_plugins
|
|
file:
|
|
state: directory
|
|
path: /etc/ansible/inventory_plugins
|
|
|
|
- name: Ensure /var/cache/ansible
|
|
file:
|
|
state: directory
|
|
path: /var/cache/ansible
|
|
owner: root
|
|
group: root
|
|
mode: 0770
|
|
|
|
- name: Ensure ansible log dir is writable
|
|
file:
|
|
path: /var/log/ansible
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: 0775
|
|
|
|
- name: Set up the ARA callback
|
|
include_tasks: install_ara.yaml
|
|
when: install_ansible_ara_enable
|
|
|
|
- name: Copy ansible.cfg in to place
|
|
template:
|
|
src: ansible.cfg.j2
|
|
dest: /etc/ansible/ansible.cfg
|
|
|
|
- name: Copy static inventory in place
|
|
copy:
|
|
src: 'inventory/{{ item }}'
|
|
dest: '/etc/ansible/hosts/{{ item }}'
|
|
loop:
|
|
- openstack.yaml
|
|
- groups.yaml
|
|
|
|
- name: Copy system-config roles into place
|
|
copy:
|
|
src: roles/
|
|
dest: /etc/ansible/roles
|
|
|
|
- name: Copy roles.yaml into /etc/ansible
|
|
copy:
|
|
src: roles.yaml
|
|
dest: /etc/ansible/roles.yaml
|
|
|
|
- name: Install ansible roles to /etc/ansible/roles
|
|
command: ansible-galaxy install --roles-path /etc/ansible/roles --force -r /etc/ansible/roles.yaml
|
|
|
|
- name: Make sure k8s-on-openstack repo is up to date
|
|
git:
|
|
repo: https://github.com/infraly/k8s-on-openstack
|
|
dest: /opt/k8s-on-openstack
|
|
# HEAD as of 2019-02-08
|
|
version: e27a313b1583c377e08385014b9a880da765924b
|
|
force: yes
|
|
|
|
# Yeah. This is install-ansible. But we need to do this and doing it when
|
|
# we install the ansible stuff seems like the right time workflow-wise.
|
|
- name: Ensure puppet directory
|
|
file:
|
|
state: directory
|
|
path: /etc/puppet
|
|
|
|
- name: Install puppet module management scripts
|
|
copy:
|
|
src: '{{ item }}'
|
|
dest: '/etc/puppet/{{ item }}'
|
|
loop:
|
|
- install_modules.sh
|
|
- modules.env
|
|
|
|
- name: Run puppet module install
|
|
command:
|
|
cmd: bash install_modules.sh
|
|
chdir: /etc/puppet
|
|
|
|
# NOTE(mordred) The copy of the openstack inventory plugin from 2.6 is busted.
|
|
# It doesn't proerly deal with caching. A fix has been submitted upstream, but
|
|
# for now this is a fixed copy.
|
|
- name: Copy fixed openstack inventory in place
|
|
copy:
|
|
src: inventory_plugins/openstack.py
|
|
dest: /etc/ansible/inventory_plugins/openstack.py
|
|
|
|
- name: Copy yamlgroup inventory in place
|
|
copy:
|
|
src: inventory_plugins/yamlgroup.py
|
|
dest: /etc/ansible/inventory_plugins/yamlgroup.py
|
|
|
|
- name: Setup log rotation
|
|
include_role:
|
|
name: logrotate
|
|
vars:
|
|
logrotate_file_name: /var/log/ansible/ansible.log
|
|
|
|
- name: Verify ansible install
|
|
command: ansible --version
|