ansible
ओपनस्टैक के साथ Ansible का उपयोग करना
खोज…
परिचय
ओपनस्टैक क्लाउड कंप्यूटिंग के लिए एक ओपन-सोर्स सॉफ्टवेयर प्लेटफॉर्म है। लिनक्स इंस्टेंस को ग्राफिबल वेब इंटरफेस का उपयोग करके मैन्युअल रूप से लॉन्च किया जा सकता है या बंद किया जा सकता है जो कि एसिबल के ओपनस्टैक क्लाउड मॉड्यूल के लिए स्वचालित धन्यवाद है।
सुगम को कॉन्फ़िगर करना मुश्किल हो सकता है, लेकिन एक बार अच्छी तरह से कॉन्फ़िगर करने के बाद यह परीक्षण और निरंतर एकीकरण पर्यावरण के लिए वास्तव में आसान और शक्तिशाली है।
पैरामीटर
मापदंडों | टिप्पणियाँ |
---|---|
मेजबान: लोकलहोस्ट | ओपनस्टैक कमांड हमारे लोकलहोस्ट से लॉन्च किए जाते हैं |
इकट्ठा_फैक्ट्स: गलत | हमें अपने लोकलहोस्ट पर जानकारी एकत्र करने की आवश्यकता नहीं है |
ऑर्टिकल_उर्ल: https://openstack-identity.mycompany.com/v2.0 | V2.0 URL का उपयोग करें |
राज्य: वर्तमान | उदाहरण प्रस्तुत करने / हटाने के लिए 'वर्तमान' / 'अनुपस्थित' |
validate_certs: गलत | उपयोगी अगर https स्व हस्ताक्षरित प्रमाण पत्र का उपयोग करता है |
नेटवर्क: "{{NetworkName}}" | (वैकल्पिक) |
auto_ip: हाँ | (वैकल्पिक) |
टिप्पणियों
- हम प्रमाणीकरण URL को सीधे प्लेबुक में रखते हैं, किसी चर में नहीं। Var में प्रयुक्त URL बचना चाहिए।
- Https://openstack-identity.mycompany.com/v2.0 में V3 के बजाय प्रमाणीकरण URL संस्करण V2.0 उपयोग के साथ लापरवाह रहें।
- Yml फ़ाइलों में, ब्राउज़र से कॉपी / पेस्ट करते समय बहुत सावधानी बरतें। खाते में लेते समय दो बार रिक्त स्थान की जाँच करें।
- और अधिक विवरण: http://docs.ansible.com/ansible/list_of_cloud_modules.html#openstack
अपने Ansible संस्करण की जाँच करें
सही सॉफ्टवेयर संस्करण स्थापित हैं की जाँच करें:
- ansible> = 2.0
- अजगर> = 2.6
- अजगर के लिए छाया मॉड्यूल
$ansible --version
ansible 2.2.0.0
$python --version
Python 2.7.5
पायथन घटक को 'शेड' स्थापित करें जिसका उपयोग पायलट ओपनस्टैक में करता है।
$pip install shade
नोट: यदि आप एक कंपनी प्रॉक्सी का उपयोग करते हैं, तो सही पाइप सिंटैक्स को जानना हमेशा उपयोगी होता है
$pip install --proxy proxy_ip:proxy_port shade
Ansible को कॉन्फ़िगर करने के लिए OpenStack GUI से informations इकट्ठा करें
हमारा ओपनस्टैक किरायेदार पहले से ही सेट है:
- एक आभासी लैन निजी आईपी उदाहरण देता है
- एक वर्चुअल राउटर मैप सार्वजनिक आईपी से निजी आईपी
- एक सुरक्षा कुंजी उत्पन्न की गई है
- हमारे पास ssh और पोर्ट 80 के लिए डिफ़ॉल्ट फ़ायरवॉल कॉन्फ़िगरेशन है
- हम ओपनस्टैक वेब इंटरफेस के लिए एक उदाहरण लॉन्च करने में सक्षम हैं
इस वेब इंटरफेस से सभी आवश्यक informations इकट्ठा करें।
ऑथेंटिकेशन फ़ीचर को ओपनस्टैक.एक फ़ाइल में पाया जा सकता है। इस फ़ाइल को [एक्सेस और सिक्योरिटी / एपीआई एक्सेस] में ओपनस्टैक वेबएन्थफेस का उपयोग करके डाउनलोड किया जा सकता है।
$cat openstack.rc
#!/bin/bash
# To use an OpenStack cloud you need to authenticate against the Identity
# service named keystone, which returns a **Token** and **Service Catalog**.
# The catalog contains the endpoints for all services the user/tenant has
# access to - such as Compute, Image Service, Identity, Object Storage, Block
# Storage, and Networking (code-named nova, glance, keystone, swift,
# cinder, and neutron).
#
# *NOTE*: Using the 2.0 *Identity API* does not necessarily mean any other
# OpenStack API is version 2.0. For example, your cloud provider may implement
# Image API v1.1, Block Storage API v2, and Compute API v2.0. OS_AUTH_URL is
# only for the Identity API served through keystone.
export OS_AUTH_URL=https://openstack-identity.mycompany.com/v3
# With the addition of Keystone we have standardized on the term **tenant**
# as the entity that owns the resources.
export OS_TENANT_ID=1ac99fef77ee40148d7d5ba3e070caae
export OS_TENANT_NAME="TrainingIC"
export OS_PROJECT_NAME="TrainingIC"
# In addition to the owning entity (tenant), OpenStack stores the entity
# performing the action as the **user**.
export OS_USERNAME="UserTrainingIC"
# With Keystone you pass the keystone password.
echo "Please enter your OpenStack Password: "
read -sr OS_PASSWORD_INPUT
export OS_PASSWORD=$OS_PASSWORD_INPUT
# If your configuration has multiple regions, we set that information here.
# OS_REGION_NAME is optional and only valid in certain environments.
export OS_REGION_NAME="fr"
# Don't leave a blank variable, unset it if it was empty
if [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi
हमें OS_AUTH_URL, OS_TENANT_NAME, OS_USERNAME मिलते हैं।
प्रमाणीकरण एपीआई संस्करण: OS_AUTH_URL
प्रमाणीकरण एपीआई संस्करण से सावधान रहें। डिफ़ॉल्ट रूप से v3 सक्रिय है, लेकिन ansible को v2.0 की आवश्यकता है। हमें V3 के बजाय url मिलता है और V2.0 सेट किया जाता है: https://openstack-identity.mycompany.com/v2.0
वीएम informations
ओपनस्टैक वेब इंटरफेस का उपयोग करके एक उदाहरण बनाएं और छवि, स्वाद, कुंजी, नेटवर्क, सुरक्षा समूह के लिए नाम प्राप्त करें।
सभी आवश्यक informations के साथ एक ./group_vars/all फ़ाइल बनाएँ।
$vi ./group_vars/all
# Authentication
AuthUserName: UserTrainingIC
AuthPassword: PasswordTrainingIC
TenantName: TrainingIC
# VM infos
ImageName: CentOS-7-x86_64-GenericCloud-1607
FlavorName: m1.1cpu.1gb
InfraKey: KeyTrainingIC
NetworkName: NetPrivateTrainingIC
SecurityGroup: default
उदाहरण बनाने के लिए ansible playbook लिखें
मॉड्यूल 'क्लाउड' [ http://docs.ansible.com/ansible/os_server_module.html] से 'os_server' कमांड का उपयोग करें। चर को ./group_vars/all में परिभाषित किया गया है।
$vi launch_compute.yml
- name: launch a compute instance
hosts: localhost
gather_facts: False
tasks:
- name: Create and launch the VM
os_server:
auth:
auth_url: https://openstack-identity.mycompany.com/v2.0
username: "{{ AuthUserName }}"
password: "{{ AuthPassword }}"
project_name: "{{ TenantName }}"
state: present
validate_certs: False
name: "MyOwnPersonalInstance"
image: "{{ ImageName }}"
key_name: "{{ InfraKey }}"
timeout: 200
flavor: "{{ FlavorName }}"
security_groups: "{{ SecurityGroup }}"
network: "{{ NetworkName }}"
auto_ip: yes
$ ansible-playbook -s launch_compute.yml
[WARNING]: provided hosts list is empty, only localhost is available
PLAY [launch a compute instance] ***********************************************
TASK [Create and launch the VM] ************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0
हमारे नए उदाहरण के बारे में जानकारी इकट्ठा करें
मॉड्यूल 'Cloud' [ http://docs.ansible.com/ansible/os_server_module.html] से 'os_server_facts' कमांड का उपयोग करें। चर को ./group_vars/all में और उदाहरण नाम सर्वर में परिभाषित किया गया है: "MyOwnPersonalInstance"।
$vi get_compute_info.yml
- name: Get and print instance IP
hosts: localhost
gather_facts: False
tasks:
- name: Get VM infos
os_server_facts:
auth:
auth_url: https://openstack-identity.mygroup/v2.0
username: "{{ AuthUserName }}"
password: "{{ AuthPassword }}"
project_name: "{{ TenantName }}"
validate_certs: False
server: "MyOwnPersonalInstance"
- name: Dump all
debug:
var: openstack_servers
$ansible-playbook -s get_compute_info.yml
[WARNING]: provided hosts list is empty, only localhost is available
PLAY [Get and print instance IP] ***********************************************
TASK [Get VM IP] ***************************************************************
ok: [localhost]
TASK [Affichage] ***************************************************************
ok: [localhost] => {
"openstack_servers": [
{
"OS-DCF:diskConfig": "MANUAL",
"OS-EXT-AZ:availability_zone": "fr",
"OS-EXT-STS:power_state": 1,
"OS-EXT-STS:task_state": null,
[...]
"volumes": []
}
]
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
यह बहुत वर्बोज़ है। बहुत सारी जानकारी प्रदर्शित की जाती है। आमतौर पर एसएसएच के माध्यम से नए उदाहरण तक पहुंचने के लिए केवल आईपी पते की आवश्यकता होती है।
अपना नया उदाहरण सार्वजनिक आईपी प्राप्त करें
सभी सूचनाओं को छापने के बजाय, हम पहले उदाहरण का केवल IP पता छापते हैं जिसका नाम "MyOwnPersonalInstance" है। यह आमतौर पर हम सभी की जरूरत है।
$vi get_compute_ip.yml
- name: Get and print instance IP
hosts: localhost
gather_facts: False
tasks:
- name: Get VM infos
os_server_facts:
auth:
auth_url: https://openstack-identity.mycompany.com/v2.0
username: "{{ AuthUserName }}"
password: "{{ AuthPassword }}"
project_name: "{{ TenantName }}"
validate_certs: False
server: "MyOwnPersonalInstance"
- name: Dump IP
debug:
var: openstack_servers[0].interface_ip
हमारे उदाहरण को हटा दें
हमारे उदाहरण को हटाने के लिए, सभी प्रमाणीकरण सूचनाओं के साथ os_server कमांड का पुन: उपयोग करें और बस 'राज्य: वर्तमान' को 'राज्य: अनुपस्थित' से बदल दें।
$vi stop_compute.yml
- name: launch a compute instance
hosts: localhost
gather_facts: False
tasks:
- name: Create and launch the VM
os_server:
auth:
auth_url: https://openstack-identity.mygroup/v2.0
username: "{{ AuthUserName }}"
password: "{{ AuthPassword }}"
project_name: "{{ ProjectName }}"
state: absent
validate_certs: False
name: "{{ TPUser }}"
timeout: 200