Skip to content

Instantly share code, notes, and snippets.

@wgroenewold
Created January 17, 2023 13:36
Show Gist options
  • Save wgroenewold/7af31896d5cb861bb575e9b188cad50f to your computer and use it in GitHub Desktop.
Save wgroenewold/7af31896d5cb861bb575e9b188cad50f to your computer and use it in GitHub Desktop.
Create an instance on merlin cluster (RUG) in Ansible
---
- name: Create an instance on merlin cluster (RUG) in Ansible
hosts: localhost
remote_user: "{{ merlin_username }}"
vars:
ansible_python_interpreter: python
openstack_api_timeout: 180
os_auth: {
'auth_url': '',
'password': '',
'project_domain_id': '',
'project_id': '',
'project_name': '',
'user_domain_name': '',
'username': ''
}
external_network_name: vlan1066
keypair_name:
merlin_username:
private_network_name: some_private_network
private_subnet_name: some_private_subnet
router_name: some_router
security_group_name: default
server_name: some_server
ssh_port: 22
subnet_cidr: 192.0.2.0/24
volume_name: some_volume
tasks:
- name: Create private network
openstack.cloud.network:
name: "{{ private_network_name }}"
auth: "{{ os_auth }}"
state: present
- name: Create private subnet
openstack.cloud.subnet:
name: "{{ private_subnet_name }}"
auth: "{{ os_auth }}"
cidr: "{{ subnet_cidr }}"
network_name: "{{ private_network_name }}"
state: present
- name: Create router
openstack.cloud.router:
name: "{{ router_name }}"
network: "{{ external_network_name }}"
interfaces:
- net: "{{ private_network_name }}"
subnet: "{{ private_subnet_name }}"
auth: "{{ os_auth }}"
state: present
- name: Create volume
openstack.cloud.volume:
auth: "{{ os_auth }}"
size: 10
state: present
display_name: "{{ volume_name }}"
- name: Create server
openstack.cloud.server:
name: "{{ server_name }}"
auth: "{{ os_auth }}"
flavor: m1.small
image: Ubuntu 22.04 LTS
key_name: "{{ keypair_name }}"
nics:
- net-name: "{{ external_network_name }}"
- net-name: "{{ private_network_name }}"
state: present
security_groups: "{{ security_group_name }}"
- name: Create floating IP
openstack.cloud.floating_ip:
auth: "{{ os_auth }}"
network: "{{ external_network_name }}"
server: "{{ server_name }}"
state: present
- name: Add volume to server
openstack.cloud.server_volume:
auth: "{{ os_auth }}"
server: "{{ server_name }}"
state: present
volume: "{{ volume_name }}"
- name: Create security group
openstack.cloud.security_group:
auth: "{{ os_auth }}"
name: "{{ security_group_name }}"
state: present
- name: Allow ping
openstack.cloud.security_group_rule:
auth: "{{ os_auth }}"
security_group: "{{ security_group_name }}"
protocol: icmp
remote_ip_prefix: 0.0.0.0/0
- name: Allow SSH
openstack.cloud.security_group_rule:
auth: "{{ os_auth }}"
security_group: "{{ security_group_name }}"
protocol: tcp
port_range_min: "{{ ssh_port }}"
port_range_max: "{{ ssh_port }}"
- name: Show info
openstack.cloud.server_info:
auth: "{{ os_auth }}"
server: "{{ server_name }}"
register: result
- debug:
msg: You can now ssh ubuntu@{{ result['openstack_servers'][0]['accessIPv4'] }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment