Add various functionality to nodepool role
Adds updates, restarts, changes user, etc Change-Id: I8be852be0a20649022b9793ee261f42f4d914488
This commit is contained in:
parent
edfbd87f25
commit
6b1fc20ecf
3
roles/nodepool-setup/defaults/main.yml
Normal file
3
roles/nodepool-setup/defaults/main.yml
Normal 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
|
@ -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 }}"
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user