-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for Pbench agent installation
To install Pbench agent on the compute nodes and vm's (i.e client and server),you have to follow the below steps and set the below params install/group_vars/all.yml `pbench_key_url: <pbench_key_url> pbench_config_url: <pbench_config_url> pbench_configuration_environment: <pbench_configuration_environment>` `cd {{ ansible_user_dir}}/jetpack/install` 1) To create the client and server `ansible-playbook boot.yml` 2) Install Pbench agent bootstrapping `ansible-playbook pbench_agent_bootstrap.yml -e "repos=<perf-dept-repo>" ` 3) Install Pbench agent install `ansible-playbook pbench_agent_install.yml`
- Loading branch information
Showing
17 changed files
with
508 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
[defaults] | ||
host_key_checking = false | ||
inventory = ~/.infrared/.workspaces/active/hosts | ||
timeout = 120 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
--- | ||
|
||
# Playbook to create client and server vm on Openstack | ||
# | ||
# ansible-playbook boot_vms.yml | ||
|
||
- hosts: undercloud | ||
gather_facts: yes | ||
become: true | ||
vars: | ||
vm_password: centos | ||
external_network: public | ||
pre_tasks: | ||
- name: generate pass_auth.sh | ||
template: | ||
src: pass_auth.sh.j2 | ||
dest: "{{ user_dir }}/pass_auth.sh" | ||
mode: a+rwx | ||
|
||
- name: install packages | ||
package: | ||
name: "{{ item }}" | ||
state: present | ||
loop: | ||
- wget | ||
- libguestfs-tools | ||
- sshpass | ||
- libvirt | ||
|
||
- name: restart libvirt service | ||
service: | ||
name: libvirtd | ||
state: restarted | ||
|
||
roles: | ||
- images | ||
- flavors | ||
- network | ||
- create_vm | ||
|
||
post_tasks: | ||
- name: check router exists | ||
shell: | | ||
. {{ overcloudrc }} | ||
openstack router list | grep 'r1' | ||
register: router_exists | ||
ignore_errors: yes | ||
|
||
- name: router | ||
shell: | | ||
. {{ overcloudrc }} | ||
openstack router create r1 | ||
cidr=10.0.0.0 | ||
subnet_id=`openstack subnet list -c ID -c Subnet -f value | grep $cidr | cut -d' ' -f1` | ||
neutron router-interface-add r1 $subnet_id | ||
neutron router-gateway-set r1 {{ external_network }} | ||
when: router_exists.stdout == "" | ||
|
||
- name: create floating ip for client and server | ||
shell: | | ||
. {{ overcloudrc }} | ||
client_port_id=`openstack port show {{ ports[0] }} -c id -f value` | ||
server_port_id=`openstack port show {{ ports[1] }} -c id -f value` | ||
neutron floatingip-create --port-id $client_port_id {{ external_network }} | ||
neutron floatingip-create --port-id $server_port_id {{ external_network }} | ||
ignore_errors: yes | ||
|
||
- name: get floating ip of server and client | ||
shell: | | ||
. {{ overcloudrc }} | ||
openstack server list | grep {{ item }} | cut -d \| -f 5 | cut -d \, -f 2 | awk '{$1=$1;print}' | ||
register: vms_fip | ||
with_items: | ||
- "{{ vm_names }}" | ||
|
||
- name: get computes ip | ||
shell: | | ||
. {{ stackrc }} | ||
nova list | grep {{ item }} | cut -d \| -f 7 |cut -d \= -f 2 | awk '{$1=$1;print}' | ||
register: computes_ip | ||
with_items: | ||
- "{{ compute_names }}" | ||
|
||
- name: update user to root | ||
lineinfile: | ||
path: "{{ user_dir}}/.ssh/config" | ||
regexp: ' User heat-admin' | ||
line: ' User root' | ||
|
||
- name: copy the ssh keys | ||
shell: | | ||
. {{ overcloudrc }} | ||
echo '{{ vm_password }}' | sshpass ssh-copy-id -i {{ user_dir }}/.ssh/id_rsa -o 'StrictHostKeyChecking no' -f root@{{ item.stdout }} | ||
with_items: "{{ vms_fip.results }}" | ||
changed_when: false | ||
|
||
- name: get default route | ||
shell: | | ||
ip r | grep default | cut -d ' ' -f5 | ||
register: default_route | ||
|
||
- name: flush iptables on undercloud and add masquerade rule | ||
become: true | ||
shell: | | ||
iptables -F | ||
iptables -t nat -L --line-numbers | ||
iptables -t nat -A POSTROUTING -o {{ default_route.stdout }} -j MASQUERADE | ||
iptables -t nat -A POSTROUTING -o br-ctlplane -j MASQUERADE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
def dict_remove_item( dict, item): | ||
"""Remove an item from a dictionary.""" | ||
del dict[item] | ||
return dict | ||
|
||
class FilterModule(object): | ||
def filters(self): | ||
return { | ||
'dict_remove_item': dict_remove_item, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
--- | ||
guest_image_name: pbench_image | ||
# user can add the guest_image url required below | ||
guest_images: | ||
pbench_image: | ||
name: pbench_image | ||
url_centos8: http://cloud.centos.org/centos/8/x86_64/images/CentOS-8-GenericCloud-8.2.2004-20200611.2.x86_64.qcow2 | ||
url_centos7: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2 | ||
type: qcow2 | ||
convert_to_raw: false | ||
|
||
# rhel 8 | ||
epel_repo: | ||
el8: https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm | ||
el7: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm | ||
|
||
pbench_image_rhel: false | ||
|
||
compute_names: ['compute-0', 'compute-1' ] | ||
|
||
#name for the client and server | ||
vm_names: [ client, server ] | ||
|
||
user_dir: /home/stack | ||
overcloudrc: /home/stack/overcloudrc | ||
stackrc: /home/stack/stackrc | ||
# port names | ||
ports: [ 'client_port', 'server_port'] | ||
timeout: 30 | ||
|
||
# update the values to install pbench agent | ||
#pbench_key_url: | ||
#pbench_config_url: | ||
#pbench_configuration_environment: "production" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
--- | ||
# | ||
# Playbook for installing pbench_bootstrap | ||
# | ||
# Usage: | ||
# ansible-playbook pbench_agent_bootstrap.yml -e "repos=<perf-dept-repo>" | ||
|
||
- hosts: compute | ||
tasks: | ||
- name: copy the keys | ||
shell: | | ||
sudo cp -r ~/.ssh /root/ | ||
- hosts: undercloud | ||
gather_facts: yes | ||
tasks: | ||
- name: clone perf-dept | ||
shell: | | ||
GIT_SSL_NO_VERIFY=true git clone {{ repos }} | ||
ignore_errors: yes | ||
|
||
- name: get computes ip | ||
shell: | | ||
. {{ stackrc }} | ||
nova list | grep {{ item }} | cut -d \| -f 7 |cut -d \= -f 2 | awk '{$1=$1;print}' | ||
register: computes_ip | ||
with_items: | ||
- "{{ compute_names }}" | ||
|
||
- name: get floating ip of server and client | ||
shell: | | ||
. {{ overcloudrc }} | ||
openstack server list | grep {{ item }} | cut -d \| -f 5 | cut -d \, -f 2 | awk '{$1=$1;print}' | ||
register: vms_fip | ||
with_items: | ||
- "{{ vm_names }}" | ||
|
||
- name: copy the keys | ||
shell: | | ||
sudo cp -r ~/.ssh /root/ | ||
- name: create inventories | ||
file: | ||
path: "{{ user_dir }}/.config/Inventories/" | ||
state: directory | ||
|
||
- name: generate a inventory | ||
template: | ||
src: repo_bootstrap.hosts.j2 | ||
dest: "{{ user_dir }}/.config/Inventories/repo-bootstrap.hosts" | ||
|
||
- name: run repo-bootstrap.yml | ||
shell: | | ||
ansible-playbook --user=root -i "{{ user_dir}}/.config/Inventories/repo-bootstrap.hosts" repo-bootstrap.yml | ||
register: repo_bootstrap | ||
args: | ||
chdir: "{{ user_dir }}/perf-dept/sysadmin/Ansible" | ||
- debug: | ||
msg: "{{ repo_bootstrap }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
--- | ||
# | ||
# Playbook for pbench agent installations | ||
# Usage: | ||
# ansible-playbook pbench_agent_install.yml | ||
|
||
- hosts: compute | ||
gather_facts: yes | ||
tasks: | ||
- name: install latest epel-release | ||
yum: | ||
name: "{{ epel_repo.el7 }}" | ||
state: present | ||
become: yes | ||
loop: | ||
- "{{ epel_repo.el7 }}" | ||
- perl-Data-UUID | ||
when: ansible_distribution_major_version < '8' | ||
|
||
- name: install perl-Data-UUID on Compute nodes | ||
become: true | ||
dnf: | ||
name: perl-Data-UUID | ||
state: present | ||
when: ansible_distribution_major_version == '8' | ||
|
||
- hosts: undercloud | ||
vars: | ||
pbench_agent_install: true | ||
|
||
tasks: | ||
- block: | ||
- name: remove old epel-release | ||
yum: | ||
name: "{{item }}" | ||
state: absent | ||
become: yes | ||
ignore_errors: yes | ||
loop: | ||
- epel-release | ||
- ansible | ||
|
||
- name: install latest epel-release | ||
yum: | ||
name: "{{ epel_repo.el7 }}" | ||
state: present | ||
become: yes | ||
|
||
- name: install ansible 2.9 | ||
yum: | ||
name: ansible | ||
state: present | ||
become: yes | ||
|
||
when: ansible_distribution_major_version < '8' | ||
|
||
|
||
- name: Install the pbench-agent roles from Galaxy | ||
shell: | | ||
ansible-galaxy collection install pbench.agent | ||
export ANSIBLE_ROLES_PATH=$HOME/.ansible/collections/ansible_collections/pbench/agent/roles:$ANSIBLE_ROLES_PATH | ||
- name: generate pbench agent playbook | ||
template: | ||
src: pbench_agent_install.yml.j2 | ||
dest: "{{ user_dir }}/.ansible/collections/ansible_collections/pbench/agent/roles/pbench_agent_install.yml" | ||
|
||
- name: get computes ip | ||
shell: | | ||
. {{ stackrc }} | ||
nova list | grep {{ item }} | cut -d \| -f 7 |cut -d \= -f 2 | awk '{$1=$1;print}' | ||
register: computes_ip | ||
with_items: | ||
- "{{ compute_names }}" | ||
|
||
- name: get floating ip of server and client | ||
shell: | | ||
. {{ overcloudrc }} | ||
openstack server list | grep {{ item }} | cut -d \| -f 5 | cut -d \, -f 2 | awk '{$1=$1;print}' | ||
register: vms_fip | ||
with_items: | ||
- "{{ vm_names }}" | ||
|
||
- name: create a inventory file | ||
template: | ||
src: repo_bootstrap.hosts.j2 | ||
dest: "{{ user_dir }}/.config/myhosts.inv" | ||
|
||
- name: run the playbook pbench_agent_install.yml | ||
shell: | | ||
ansible-playbook -i ~/.config/myhosts.inv pbench_agent_install.yml | ||
register: agent_install | ||
args: | ||
chdir: "{{ user_dir }}/.ansible/collections/ansible_collections/pbench/agent/roles/" | ||
- debug: | ||
msg: "{{ agent_install }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
- name: create a vm's | ||
shell: . {{ overcloudrc }}; openstack server create --flavor pbench_flavor --image {{ guest_image_name }} --nic port-id={{ item[0].stdout }} --user-data {{ user_dir }}/pass_auth.sh {{ item[1] }} | ||
with_together: | ||
- "{{ port_ids.results }}" | ||
- "{{ vm_names }}" | ||
ignore_errors: yes | ||
|
||
- name: create a vm's | ||
shell: . {{ overcloudrc }}; openstack server create --flavor pbench_flavor --image {{ guest_image_name }} --nic port-id={{ item[0].stdout }} --user-data {{ user_dir }}/pass_auth.sh {{ item[1] }} | ||
with_together: | ||
- "{{ get_port_ids.results }}" | ||
- "{{ vm_names }}" | ||
ignore_errors: yes | ||
|
||
|
||
- name: wait for vm to boot | ||
wait_for: | ||
timeout: "{{ timeout }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
--- | ||
# Add flavors to OpenStack Cloud | ||
# Ignore errors here incase the flavors already exist. | ||
|
||
- name: Add flavors to overcloud | ||
shell: . {{ overcloudrc }}; openstack flavor create --public {{ item.name }} --id auto --ram {{ item.ram }} --disk {{ item.disk }} --vcpus {{ item.cpu }} | ||
with_items: "{{ pbench_flavors }}" | ||
ignore_errors: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
pbench_flavors: | ||
- name: pbench_flavor | ||
cpu: 8 | ||
disk: 160 | ||
ram: 16384 | ||
|
Oops, something went wrong.