Allow deploy-dynamic on remote host
This change allows deploy nodes on remote server with installed Ironic. Change-Id: If0625ee5a4a2271452305bb3e079ad075b9c71b1
This commit is contained in:
parent
a5c44bee11
commit
1236d9343e
24
README.rst
24
README.rst
@ -359,6 +359,18 @@ source, and then executing the enrollment playbook.::
|
|||||||
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
||||||
ansible-playbook -vvvv -i inventory/bifrost_inventory.py enroll-dynamic.yaml
|
ansible-playbook -vvvv -i inventory/bifrost_inventory.py enroll-dynamic.yaml
|
||||||
|
|
||||||
|
When ironic is installed on remote server, a regular ansible inventory
|
||||||
|
with a target server should be added to ansible. This can be achieved by
|
||||||
|
specifying a directory with files, each file in that directory will be part of
|
||||||
|
the ansible inventory. Refer to ansible documentation
|
||||||
|
http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
||||||
|
rm inventory/*.example
|
||||||
|
ansible-playbook -vvvv -i inventory/ enroll-dynamic.yaml
|
||||||
|
|
||||||
Note that enrollment is a one-time operation. The Ansible module *does not*
|
Note that enrollment is a one-time operation. The Ansible module *does not*
|
||||||
synchronize data for existing nodes. You should use the ironic CLI to do this
|
synchronize data for existing nodes. You should use the ironic CLI to do this
|
||||||
manually at the moment.
|
manually at the moment.
|
||||||
@ -382,6 +394,18 @@ To utilize the newer dynamic inventory based deployment::
|
|||||||
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
||||||
ansible-playbook -vvvv -i inventory/bifrost_inventory.py deploy-dynamic.yaml
|
ansible-playbook -vvvv -i inventory/bifrost_inventory.py deploy-dynamic.yaml
|
||||||
|
|
||||||
|
When ironic is installed on remote server, a regular ansible inventory
|
||||||
|
with a target server should be added to ansible. This can be achieved by
|
||||||
|
specifying a directory with files, each file in that directory will be part of
|
||||||
|
the ansible inventory. Refer to ansible documentation
|
||||||
|
http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
|
||||||
|
rm inventory/*.example
|
||||||
|
ansible-playbook -vvvv -i inventory/ deploy-dynamic.yaml
|
||||||
|
|
||||||
Note::
|
Note::
|
||||||
|
|
||||||
Before running the above command, ensure that the value for `ssh_public_key_path` in
|
Before running the above command, ensure that the value for `ssh_public_key_path` in
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
---
|
---
|
||||||
- hosts: localhost
|
|
||||||
connection: local
|
|
||||||
name: "Collect facts"
|
|
||||||
become: no
|
|
||||||
gather_facts: yes
|
|
||||||
- hosts: baremetal
|
- hosts: baremetal
|
||||||
name: "Create configuration drive files and deploy machines from inventory"
|
name: "Create configuration drive files and deploy machines from inventory"
|
||||||
become: no
|
become: no
|
||||||
connection: local
|
gather_facts: no
|
||||||
roles:
|
roles:
|
||||||
- role: bifrost-configdrives-dynamic
|
- role: bifrost-configdrives-dynamic
|
||||||
|
delegate_to: "{{ groups['target'][0] if groups['target'] is defined else 'localhost' }}"
|
||||||
- role: bifrost-deploy-nodes-dynamic
|
- role: bifrost-deploy-nodes-dynamic
|
||||||
|
delegate_to: "{{ groups['target'][0] if groups['target'] is defined else 'localhost' }}"
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
when: ssh_public_key is undefined
|
when: ssh_public_key is undefined
|
||||||
|
|
||||||
- name: "Make temporary folder to build configdrive"
|
- name: "Make temporary folder to build configdrive"
|
||||||
local_action: command mktemp -d
|
command: mktemp -d
|
||||||
register: variable_configdrive_location
|
register: variable_configdrive_location
|
||||||
|
|
||||||
- name: "Make metadata folder - /openstack/{{ metadata_version }}"
|
- name: "Make metadata folder - /openstack/{{ metadata_version }}"
|
||||||
@ -80,7 +80,7 @@
|
|||||||
name: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/content/"
|
name: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/content/"
|
||||||
|
|
||||||
- name: "Write network Debian style interface template"
|
- name: "Write network Debian style interface template"
|
||||||
local_action: template src=interfaces.j2 dest={{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/content/0000
|
template: src=interfaces.j2 dest={{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/content/0000
|
||||||
when: write_interfaces_file | bool == true
|
when: write_interfaces_file | bool == true
|
||||||
|
|
||||||
- name: "Check if mkisofs is available"
|
- name: "Check if mkisofs is available"
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
# the pass-through could mean that the user could deploy
|
# the pass-through could mean that the user could deploy
|
||||||
# things that are not directly accessible or reasonable
|
# things that are not directly accessible or reasonable
|
||||||
# to be inspected.
|
# to be inspected.
|
||||||
|
- name: "Obtain setup facts"
|
||||||
|
setup:
|
||||||
|
|
||||||
- name: "If in noauth mode, unset authentication parameters."
|
- name: "If in noauth mode, unset authentication parameters."
|
||||||
set_fact:
|
set_fact:
|
||||||
auth_type: None
|
auth_type: None
|
||||||
@ -44,7 +47,6 @@
|
|||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
delegate_to: localhost
|
|
||||||
when: inventory_dhcp | bool == true
|
when: inventory_dhcp | bool == true
|
||||||
become: yes
|
become: yes
|
||||||
- name: "Setup DNS address for nodes."
|
- name: "Setup DNS address for nodes."
|
||||||
@ -54,7 +56,6 @@
|
|||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
delegate_to: localhost
|
|
||||||
when: inventory_dns | bool == true
|
when: inventory_dns | bool == true
|
||||||
become: yes
|
become: yes
|
||||||
- name: "Sending dnsmasq HUP"
|
- name: "Sending dnsmasq HUP"
|
||||||
@ -74,10 +75,9 @@
|
|||||||
instance_info: "{{ instance_info }}"
|
instance_info: "{{ instance_info }}"
|
||||||
wait: "{{ wait_for_node_deploy }}"
|
wait: "{{ wait_for_node_deploy }}"
|
||||||
timeout: " {{ wait_timeout | default(1800) }}"
|
timeout: " {{ wait_timeout | default(1800) }}"
|
||||||
delegate_to: localhost
|
|
||||||
when: instance_info is defined and instance_info | to_json != '{}'
|
when: instance_info is defined and instance_info | to_json != '{}'
|
||||||
- name: "Collect the checksum of the deployment image."
|
- name: "Collect the checksum of the deployment image."
|
||||||
local_action: stat path={{deploy_image}}
|
stat: path={{deploy_image}}
|
||||||
register: test_deploy_image
|
register: test_deploy_image
|
||||||
when: instance_info is not defined or ( instance_info is defined and instance_info | to_json == '{}' )
|
when: instance_info is not defined or ( instance_info is defined and instance_info | to_json == '{}' )
|
||||||
- name: "Error if deploy_image is not present, and instance_info is not defined"
|
- name: "Error if deploy_image is not present, and instance_info is not defined"
|
||||||
|
Loading…
Reference in New Issue
Block a user