Add various functionality to nodepool role

Adds updates, restarts, changes user, etc

Change-Id: I8be852be0a20649022b9793ee261f42f4d914488
This commit is contained in:
Sagi Shnaidman 2017-11-08 17:30:36 +02:00
parent edfbd87f25
commit 6b1fc20ecf
4 changed files with 117 additions and 73 deletions

View File

@ -0,0 +1,3 @@
nodepool_cirros_url: http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
nodepool_cirros_dest: /opt/cache/files/cirros-0.3.5-x86_64-disk.img
nodepool_cirros_checksum: md5:f8ab98ff5e73ebab884d80c9dc9c7290

View File

@ -2,64 +2,42 @@
- name: Create /opt/stack directory
file:
path: /opt/stack
owner: zuul
group: zuul
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
state: directory
become: true
- name: Link /opt/stack/new to /opt/stack for backwards compat
file:
src: /opt/stack
dest: /opt/stack/new
owner: zuul
group: zuul
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
state: link
become: true
- name: Ensure git is installed
package:
name: git
state: latest
- name: Clone tripleo-quickstart
- name: Clone repos
git:
repo: https://git.openstack.org/openstack/tripleo-quickstart
dest: /opt/stack/tripleo-quickstart
version: master
- name: Clone tripleo-quickstart-extras
git:
repo: https://git.openstack.org/openstack/tripleo-quickstart-extras
dest: /opt/stack/tripleo-quickstart-extras
version: master
- name: Clone tripleo-ci
git:
repo: https://git.openstack.org/openstack-infra/tripleo-ci
dest: /opt/stack/tripleo-ci
version: master
- name: Clone devstack
git:
repo: https://git.openstack.org/openstack-dev/devstack
dest: /opt/stack/devstack
version: master
- name: Clone devstack-gate
git:
repo: https://git.openstack.org/openstack-infra/devstack-gate
dest: /opt/stack/devstack-gate
repo: "{{ item }}"
dest: "/opt/stack/{{ item.split('/')[-1] }}"
version: master
with_items:
- https://git.openstack.org/openstack/tripleo-quickstart
- https://git.openstack.org/openstack/tripleo-quickstart-extras
- https://git.openstack.org/openstack-infra/tripleo-ci
- https://git.openstack.org/openstack-dev/devstack
- https://git.openstack.org/openstack-infra/devstack-gate
- name: Create /opt/cache/files directory
file:
path: /opt/cache/files
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
state: directory
become: true
- name: Make sure git repos are zuul owned
file:
path: /opt/stack
owner: zuul
group: zuul
recurse: yes
state: directory
- name: Download Cirros image
get_url:
url: "{{ nodepool_cirros_url }}"
dest: "{{ nodepool_cirros_dest }}"
checksum: "{{ nodepool_cirros_checksum }}"

View File

@ -3,8 +3,8 @@
file:
path: /etc/nodepool
state: directory
owner: zuul
group: zuul
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0755
- name: Create /etc/nodepool/node_private
@ -12,8 +12,8 @@
create: yes
state: present
name: /etc/nodepool/node_private
owner: zuul
group: zuul
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
line: "{{ subnode_private_ip }}"
- name: Create /etc/nodepool/primary_node_private
@ -21,8 +21,8 @@
create: yes
state: present
name: /etc/nodepool/primary_node_private
owner: zuul
group: zuul
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
line: "{{ hostvars['subnode-0'].subnode_private_ip }}"
- name: Create /etc/nodepool/provider
@ -34,15 +34,27 @@
NODEPOOL_AZ=
dest: /etc/nodepool/provider
# Required for single node jobs
- name: Create empty /etc/nodepool/sub_nodes
copy:
dest: /etc/nodepool/sub_nodes
content: ''
- name: Create /etc/nodepool/sub_nodes
lineinfile:
create: yes
state: present
name: /etc/nodepool/sub_nodes
line: "{{ hostvars[item].ansible_host }}"
line: "{{ hostvars[item].subnode_public_ip }}"
with_inventory_hostnames:
- subnodes:!subnode-0
# Required for single node jobs
- name: Create empty /etc/nodepool/sub_nodes_private
copy:
dest: /etc/nodepool/sub_nodes_private
content: ''
- name: Create /etc/nodepool/sub_nodes_private
lineinfile:
create: yes
@ -53,17 +65,17 @@
- subnodes:!subnode-0
- name: Create /etc/nodepool/id_rsa
command: >
ssh-keygen -N "" -f /etc/nodepool/id_rsa
shell: >
ssh-keygen -N "" -f /etc/nodepool/id_rsa;
chmod 600 /etc/nodepool/id_rsa;
args:
creates: /etc/nodepool/id_rsa
- name: Make sure /etc/nodepool/id_rsa is owned by zuul
file:
path: '/etc/nodepool/id_rsa{{ item }}'
owner: zuul
group: zuul
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
with_items:
- ''
- '.pub'

View File

@ -6,6 +6,7 @@
file:
path: /etc/ci
state: directory
owner: "{{ ansible_user }}"
become: true
# NOTE: (trown) this is just a place holder, but I am not so sure we
@ -14,20 +15,28 @@
template:
dest: /etc/ci/mirror_info.sh
src: mirror_info.sh.j2
- name: Install repos (will be removed by toci_gatetest)
package:
name: "{{ item }}"
with_items:
- centos-release-openstack-ocata
- epel-release
become: true
- name: Install packages
yum:
name: "{{ item }}"
state: latest
with_items:
- git
- unbound
- screen
- vim
- wget
become: true
- include: clone-ci-repos.yml
become: true
- name: Install epel (will be removed by toci_gatetest)
package:
name: epel-release
become: true
- name: Install openstack repos
package:
name: centos-release-openstack-ocata
become: true
- name: Set primary public key on all hosts
shell: cat /etc/nodepool/id_rsa.pub
@ -40,10 +49,52 @@
state: present
line: "{{ hostvars['subnode-0'].primary_key.stdout }}"
- name: Download Cirros image
get_url:
url: http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
dest: /opt/cache/files/cirros-0.3.5-x86_64-disk.img
checksum: md5:f8ab98ff5e73ebab884d80c9dc9c7290
- name: Scan SSH keys from subnodes
shell: |
for key in {{ hostvars[item].subnode_public_ip }} {{ hostvars[item].subnode_private_ip }}; do
if ! grep -q $key /etc/ssh/ssh_known_hosts ; then
ssh-keyscan $key >> /etc/ssh/ssh_known_hosts
fi
done
with_inventory_hostnames:
- subnodes
become: true
- name: start services
service:
name: unbound
state: started
enabled: yes
become: true
- name: Set some env vars
lineinfile:
dest: /etc/environment
state: present
line: "{{ item }}"
with_items:
- "WORKSPACE=/tmp"
- "DEVSTACK_GATE_TIMEOUT=300"
- "REMAINING_TIME=180" # 3 hours for quickstart run
# In case of multinode
- "EXTRA_VARS=' --extra-vars vxlan_mtu=1400'"
become: true
- name: Update packages
yum:
name: '*'
state: latest
become: true
- name: Reboot hosts
shell: sleep 2 && shutdown -r now
async: 1
poll: 0
ignore_errors: true
become: true
- name: Wait a little
pause: seconds=30
- name: Wait for provisioned hosts to become reachable
local_action: wait_for host="{{ hostvars[inventory_hostname].subnode_public_ip }}" port=22 delay=5 state=started connect_timeout=10 timeout=180