Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions facts_about_hosts/10.1.162.216

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions facts_about_hosts/10.1.88.110

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions host_vars/10.1.162.216
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
primary_ip: 10.1.88.110
primary_ipv6: "fe80::f447:c3ff:fe70:8dfc"
subnode_ip: 10.1.162.216
subnode_ipv6: "2001:4800:1ae1:18:f816:3eff:feed:865e"
node_ip: 10.1.162.216
node_role: sub
7 changes: 7 additions & 0 deletions host_vars/10.1.88.110
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
primary_ip: 10.1.88.110
primary_ipv6: "fe80::f447:c3ff:fe70:8dfc"
subnode_ip: 10.1.162.216
subnode_ipv6: "2001:4800:1ae1:18:f816:3eff:feed:865e"
node_ip: 10.1.88.110
node_role: primary
2 changes: 2 additions & 0 deletions hosts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
10.1.88.110 ansible_connection=local
10.1.162.216
71 changes: 71 additions & 0 deletions multi-node-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/bash

if [ ! -f ~/.ssh/id_rsa ]; then
echo "You don't have a ~/.ssh/id_rsa file."
echo "How the heck are we going to log into the subnode???"
echo "A key should be generated and should be able to login and sudo on the other node using that key"
exit 1
fi

if [[ $# -lt 2 ]] ; then
echo 'Please provide primary private IP and sub private IP'
exit 0
fi


# Create our hosts file
echo "Creating the hosts file..."
cat << EOF > hosts
$1
$2
EOF

rm -rf host_vars/

# Let's go get facts about these hosts
echo "Collecting facts about our hosts..."
rm -rf facts_about_hosts/
ansible -i hosts all -m setup --tree facts_about_hosts/ > /dev/null

# On OSIC cluster it is all IPv6 for public IP addresses
echo "Determining IPv6 addresses..."
primary_ipv6=$(jq ' .ansible_facts.ansible_all_ipv6_addresses[0]' facts_about_hosts/${1})
subnode_ipv6=$(jq ' .ansible_facts.ansible_all_ipv6_addresses[0]' facts_about_hosts/${2})

# Create our host variables
echo "Creating the host_vars files..."
rm -rf host_vars/
mkdir host_vars
# Create primary node variables
cat << EOF > host_vars/$1
---
primary_ip: $1
primary_ipv6: ${primary_ipv6}
subnode_ip: $2
subnode_ipv6: ${subnode_ipv6}
node_ip: $1
node_role: primary
EOF

# Create subnode variables
cat << EOF > host_vars/$2
---
primary_ip: $1
primary_ipv6: ${primary_ipv6}
subnode_ip: $2
subnode_ipv6: ${subnode_ipv6}
node_ip: $2
node_role: sub
EOF

# Create a provider.txt file if it doesn't exist:
if [ ! -f provider.txt ]; then
cat << EOF > /etc/nodepool/provider
NODEPOOL_PROVIDER='osic-cloud1-s3500'
NODEPOOL_CLOUD='osic-cloud1'
NODEPOOL_REGION='RegionOne'
NODEPOOL_AZ=''
EOF
fi

ansible-playbook -i hosts -vvv playbook.yml
2 changes: 2 additions & 0 deletions playbook.retry
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
10.1.162.216
10.1.88.110
108 changes: 108 additions & 0 deletions playbook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
- hosts: all
vars:
- build_user: jenkins
- build_group: jenkins
tasks:
- name: Erase /etc/nodepool/ directory
file: path=/etc/nodepool state=absent
become: yes
- name: Create /etc/nodepool/ directory
file:
path: /etc/nodepool
state: directory
owner: "{{build_user}}"
group: "{{build_user}}"
become: yes
- name: Create /etc/nodepool/primary_node IPv6 address file
copy:
content: "{{primary_ipv6}}\n"
dest: /etc/nodepool/primary_node
become: yes
become_user: jenkins
- name: Create /etc/nodepool/primary_node_private IP address file
copy:
content: "{{primary_ip}}\n"
dest: /etc/nodepool/primary_node_private
become: yes
become_user: jenkins
- name: Create /etc/nodepool/node_private IP address file
copy:
content: "{{node_ip}}\n"
dest: /etc/nodepool/node_private
become: yes
become_user: jenkins
- name: Create /etc/nodepool/subnode_nodes_private IP address file
copy:
content: "{{subnode_ip}}\n"
dest: /etc/nodepool/sub_nodes_private
become: yes
become_user: jenkins
- name: Create /etc/nodepool/sub_nodes IPv6 address file
copy:
content: "{{subnode_ipv6}}\n"
dest: /etc/nodepool/sub_nodes
become: yes
become_user: jenkins
- name: Copy provider file to /etc/nodepool/provider
copy:
src: provider.txt
dest: /etc/nodepool/provider
become: yes
become_user: jenkins
- name: Copy SSH keys to /etc/nodepool/
copy:
src: "{{item}}"
dest: /etc/nodepool/
with_fileglob:
- "~/.ssh/id_rsa*"
become: yes
become_user: jenkins

- name: Do ip6tables for IPv6 addresses
command: ip6tables -I openstack-INPUT 1 -s "{{item}}" -j ACCEPT
with_items:
- "{{primary_ipv6}}"
- "{{subnode_ipv6}}"
become: yes

- name: Do iptables for IPv4 addresses
command: iptables -I openstack-INPUT 1 -s "{{item}}" -j ACCEPT
with_items:
- "{{primary_ip}}"
- "{{subnode_ip}}"
become: yes


# SSH keys
- name: Create ~jenkins/.ssh/ directory
file:
path: ~jenkins/.ssh/
state: directory
owner: jenkins
group: jenkins
mode: 0700
become: yes

- name: Copy id_rsa file to ~jenkins/.ssh/ directory
copy:
src: ~/.ssh/id_rsa
dest: ~jenkins/.ssh/
mode: 0600
become: yes
become_user: jenkins

- name: Copy id_rsa.pub file to ~jenkins/id_rsa.pub
copy:
src: /home/ubuntu/.ssh/id_rsa.pub
dest: ~jenkins/.ssh/
mode: 0644
become: yes
become_user: jenkins

- name: Add id_rsa.pub to ~jenkins/authorized_keys
authorized_key:
user: jenkins
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
become: yes
become_user: jenkins
4 changes: 4 additions & 0 deletions provider.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
NODEPOOL_PROVIDER='osic-cloud1-s3500'
NODEPOOL_CLOUD='osic-cloud1'
NODEPOOL_REGION='RegionOne'
NODEPOOL_AZ=''