Add role to setup any centos vm to look like nodepool vm
This role will clone the needed CI repos and make sure the /etc/nodepool files are in place in order to run the toci scripts on a cloud provisioned CentOS guest. Change-Id: I7b0b3f27ee012583c22eb1a4372e61cda7a429f1
This commit is contained in:
parent
2c0e26323e
commit
edfbd87f25
playbooks
roles/nodepool-setup
7
playbooks/nodepool-setup.yml
Normal file
7
playbooks/nodepool-setup.yml
Normal file
@ -0,0 +1,7 @@
|
||||
# setup the nodepool nodes
|
||||
- name: Setup the provisioned virtual machines to look like nodepool nodes
|
||||
hosts: subnodes
|
||||
gather_facts: yes
|
||||
roles:
|
||||
- nodepool-setup
|
||||
|
65
roles/nodepool-setup/tasks/clone-ci-repos.yml
Normal file
65
roles/nodepool-setup/tasks/clone-ci-repos.yml
Normal file
@ -0,0 +1,65 @@
|
||||
---
|
||||
- name: Create /opt/stack directory
|
||||
file:
|
||||
path: /opt/stack
|
||||
owner: zuul
|
||||
group: zuul
|
||||
state: directory
|
||||
|
||||
- name: Link /opt/stack/new to /opt/stack for backwards compat
|
||||
file:
|
||||
src: /opt/stack
|
||||
dest: /opt/stack/new
|
||||
owner: zuul
|
||||
group: zuul
|
||||
state: link
|
||||
|
||||
- name: Ensure git is installed
|
||||
package:
|
||||
name: git
|
||||
state: latest
|
||||
|
||||
- name: Clone tripleo-quickstart
|
||||
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
|
||||
version: master
|
||||
|
||||
- name: Create /opt/cache/files directory
|
||||
file:
|
||||
path: /opt/cache/files
|
||||
state: directory
|
||||
|
||||
- name: Make sure git repos are zuul owned
|
||||
file:
|
||||
path: /opt/stack
|
||||
owner: zuul
|
||||
group: zuul
|
||||
recurse: yes
|
||||
state: directory
|
||||
|
||||
|
69
roles/nodepool-setup/tasks/etc-nodepool.yml
Normal file
69
roles/nodepool-setup/tasks/etc-nodepool.yml
Normal file
@ -0,0 +1,69 @@
|
||||
---
|
||||
- name: Create /etc/nodepool directory
|
||||
file:
|
||||
path: /etc/nodepool
|
||||
state: directory
|
||||
owner: zuul
|
||||
group: zuul
|
||||
mode: 0755
|
||||
|
||||
- name: Create /etc/nodepool/node_private
|
||||
lineinfile:
|
||||
create: yes
|
||||
state: present
|
||||
name: /etc/nodepool/node_private
|
||||
owner: zuul
|
||||
group: zuul
|
||||
line: "{{ subnode_private_ip }}"
|
||||
|
||||
- name: Create /etc/nodepool/primary_node_private
|
||||
lineinfile:
|
||||
create: yes
|
||||
state: present
|
||||
name: /etc/nodepool/primary_node_private
|
||||
owner: zuul
|
||||
group: zuul
|
||||
line: "{{ hostvars['subnode-0'].subnode_private_ip }}"
|
||||
|
||||
- name: Create /etc/nodepool/provider
|
||||
copy:
|
||||
content: |
|
||||
NODEPOOL_PROVIDER=rdo-cloud-tripleo
|
||||
NODEPOOL_CLOUD=fake-cloud
|
||||
NODEPOOL_REGION=FAKE
|
||||
NODEPOOL_AZ=
|
||||
dest: /etc/nodepool/provider
|
||||
|
||||
- name: Create /etc/nodepool/sub_nodes
|
||||
lineinfile:
|
||||
create: yes
|
||||
state: present
|
||||
name: /etc/nodepool/sub_nodes
|
||||
line: "{{ hostvars[item].ansible_host }}"
|
||||
with_inventory_hostnames:
|
||||
- subnodes:!subnode-0
|
||||
|
||||
- name: Create /etc/nodepool/sub_nodes_private
|
||||
lineinfile:
|
||||
create: yes
|
||||
state: present
|
||||
name: /etc/nodepool/sub_nodes_private
|
||||
line: "{{ hostvars[item].subnode_private_ip }}"
|
||||
with_inventory_hostnames:
|
||||
- subnodes:!subnode-0
|
||||
|
||||
- name: Create /etc/nodepool/id_rsa
|
||||
command: >
|
||||
ssh-keygen -N "" -f /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
|
||||
with_items:
|
||||
- ''
|
||||
- '.pub'
|
||||
|
49
roles/nodepool-setup/tasks/main.yml
Normal file
49
roles/nodepool-setup/tasks/main.yml
Normal file
@ -0,0 +1,49 @@
|
||||
---
|
||||
- include: etc-nodepool.yml
|
||||
become: true
|
||||
|
||||
- name: Create /etc/ci directory
|
||||
file:
|
||||
path: /etc/ci
|
||||
state: directory
|
||||
become: true
|
||||
|
||||
# NOTE: (trown) this is just a place holder, but I am not so sure we
|
||||
# need to create this file.
|
||||
- name: Create /etc/ci/mirror_info.sh
|
||||
template:
|
||||
dest: /etc/ci/mirror_info.sh
|
||||
src: mirror_info.sh.j2
|
||||
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
|
||||
register: primary_key
|
||||
when: inventory_hostname == "subnode-0"
|
||||
|
||||
- name: Add primary key
|
||||
lineinfile:
|
||||
dest: ~/.ssh/authorized_keys
|
||||
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
|
||||
become: true
|
||||
|
69
roles/nodepool-setup/templates/mirror_info.sh.j2
Normal file
69
roles/nodepool-setup/templates/mirror_info.sh.j2
Normal file
@ -0,0 +1,69 @@
|
||||
#!/bin/bash -xe
|
||||
|
||||
# Ansible managed
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
export NODEPOOL_MIRROR_HOST=mirror.ord.rax.openstack.org
|
||||
|
||||
# This script generates a descriptor slug to use with AFS, composed of the
|
||||
# operating system, its version, and the processor architecture.
|
||||
|
||||
# Pull in the os release.
|
||||
# ID is 'fedora', 'centos', 'ubuntu'
|
||||
# VERSION_ID is '23', '7', '14.04'
|
||||
# Nothing else is useful and/or reliable across distros
|
||||
. /etc/os-release
|
||||
|
||||
################################################################################
|
||||
# Generate an OS Release Name
|
||||
OS_TYPE=$ID
|
||||
|
||||
################################################################################
|
||||
# Generate a version string.
|
||||
OS_VERSION=$VERSION_ID
|
||||
if [ "$OS_TYPE" != "ubuntu" ]; then
|
||||
OS_VERSION=$(echo $OS_VERSION | cut -d'.' -f1)
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
# Get the processor architecture.
|
||||
# x86_64, i386, armv7l, armv6l
|
||||
OS_ARCH=$(uname -m)
|
||||
|
||||
################################################################################
|
||||
# Build the name
|
||||
AFS_SLUG="$OS_TYPE-$OS_VERSION-$OS_ARCH"
|
||||
AFS_SLUG=$(echo "$AFS_SLUG" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
export AFS_SLUG
|
||||
export NODEPOOL_DEBIAN_MIRROR=${NODEPOOL_DEBIAN_MIRROR:-http://$NODEPOOL_MIRROR_HOST/debian}
|
||||
export NODEPOOL_PYPI_MIRROR=${NODEPOOL_PYPI_MIRROR:-http://$NODEPOOL_MIRROR_HOST/pypi/simple}
|
||||
export NODEPOOL_WHEEL_MIRROR=${NODEPOOL_WHEEL_MIRROR:-http://$NODEPOOL_MIRROR_HOST/wheel/$AFS_SLUG}
|
||||
export NODEPOOL_UBUNTU_MIRROR=${NODEPOOL_UBUNTU_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ubuntu}
|
||||
export NODEPOOL_CENTOS_MIRROR=${NODEPOOL_CENTOS_MIRROR:-http://$NODEPOOL_MIRROR_HOST/centos}
|
||||
export NODEPOOL_DEBIAN_OPENSTACK_MIRROR=${NODEPOOL_DEBIAN_OPENSTACK_MIRROR:-http://$NODEPOOL_MIRROR_HOST/debian-openstack}
|
||||
export NODEPOOL_EPEL_MIRROR=${NODEPOOL_EPEL_MIRROR:-http://$NODEPOOL_MIRROR_HOST/epel}
|
||||
export NODEPOOL_FEDORA_MIRROR=${NODEPOOL_FEDORA_MIRROR:-http://$NODEPOOL_MIRROR_HOST/fedora}
|
||||
export NODEPOOL_OPENSUSE_MIRROR=${NODEPOOL_OPENSUSE_MIRROR:-http://$NODEPOOL_MIRROR_HOST/opensuse}
|
||||
export NODEPOOL_CEPH_MIRROR=${NODEPOOL_CEPH_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ceph-deb-hammer}
|
||||
export NODEPOOL_UCA_MIRROR=${NODEPOOL_UCA_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ubuntu-cloud-archive}
|
||||
export NODEPOOL_MARIADB_MIRROR=${NODEPOOL_MARIADB_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ubuntu-mariadb}
|
||||
# Reverse proxy servers
|
||||
export NODEPOOL_BUILDLOGS_CENTOS_PROXY=${NODEPOOL_BUILDLOGS_CENTOS_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/buildlogs.centos}
|
||||
export NODEPOOL_DOCKER_REGISTRY_PROXY=${NODEPOOL_DOCKER_REGISTRY_PROXY:-http://$NODEPOOL_MIRROR_HOST:8081/registry-1.docker/}
|
||||
export NODEPOOL_RDO_PROXY=${NODEPOOL_RDO_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/rdo}
|
||||
export NODEPOOL_RUGYGEMS_PROXY=${NODEPOOL_RUBYGEMS_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/rubygems/}
|
||||
export NODEPOOL_NPM_REGISTRY_PROXY=${NODEPOOL_NPM_REGISTRY_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/registry.npmjs}
|
||||
export NODEPOOL_TARBALLS_PROXY=${NODEPOOL_TARBALLS_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/tarballs}
|
||||
export NODEPOOL_LXC_IMAGE_PROXY=${NODEPOOL_LXC_IMAGE_PROXY:-$NODEPOOL_MIRROR_HOST:8080/images.linuxcontainers}
|
Loading…
x
Reference in New Issue
Block a user