kayobe/ansible/kolla-ansible-user.yml
Mark Goddard 40e43e235d Run kolla-ansible bootstrap-servers as kolla user
Previously, Kayobe used Kolla Ansible's bootstrap-servers command to
create a user account and Python virtual environment for Kolla Ansible.
In order to do this it used the Kayobe Ansible user and Python
interpreter.

This causes problems for Ansible fact caching, which needs separate
caches for Kayobe and Kolla Ansible, since the different users and
Python interpreters used result in different facts. Bootstrapping
servers with the Kayobe user and interpreter resulted in the Kolla
Ansible fact cache being populated with Kayobe's user and interpreter.

This change disables user creation during Kolla Ansible's
bootstrap-servers command, instead creating the user and virtual
environment in Kayobe prior to running the command. This allows the
bootstrap-servers command to be executed using the normal Kolla Ansible
user and interpreter, which results in the correct facts being gathered.

The downside here is some duplication of code and configuration, but a
nice side effect is that we no longer need to dump configuration in the
CLI for host configure in order to fetch the Ansible user and
interpreter.

Change-Id: I85670be7242bc436f73c689f027670b0938ba031
Story: 2007492
Task: 39444
2020-04-16 20:44:34 +01:00

48 lines
1.6 KiB
YAML

---
- name: Ensure the Kolla Ansible user account exists
hosts: seed:overcloud
gather_facts: false
tags:
- kolla-ansible
- kolla-ansible-user
vars:
# kolla_overcloud_inventory_top_level_group_map looks like:
# kolla_overcloud_inventory_top_level_group_map:
# control:
# groups:
# - controllers
hosts_in_kolla_inventory: >-
{{ kolla_overcloud_inventory_top_level_group_map.values() |
map(attribute='groups') | flatten | unique | union(['seed']) | join(':') }}
tasks:
- block:
- name: Ensure the Kolla Ansible user account exists
include_role:
name: singleplatform-eng.users
apply:
become: True
vars:
groups_to_create:
- name: docker
- name: "{{ kolla_ansible_group }}"
- name: sudo
users:
- username: "{{ kolla_ansible_user }}"
group: "{{ kolla_ansible_group }}"
groups:
- docker
- sudo
append: True
ssh_key:
- "{{ kolla_ansible_custom_passwords.kolla_ssh_key.public_key }}"
- name: Ensure the Kolla Ansible user has passwordless sudo
copy:
content: "{{ kolla_ansible_user }} ALL=(ALL) NOPASSWD: ALL"
dest: "/etc/sudoers.d/kolla-ansible-users"
mode: 0640
become: True
when:
- inventory_hostname in query('inventory_hostnames', hosts_in_kolla_inventory)
- kolla_ansible_create_user | bool