??????????????
Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 173

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 174

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 176

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 177

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 178
ó àUdac@`s(ddlmZmZmZeZdZdZddlZddl Z ddl Z ddl m Z ddl mZmZmZmZmZddlmZmZddlmZmZdd lmZdd lmZydd lmZWn!ek r dd l mZnXd efd „ƒYZ!dS(i(tabsolute_importtdivisiontprint_functionsÿ name: tower plugin_type: inventory author: - Matthew Jones (@matburt) - Yunfan Zhang (@YunfanZhang42) short_description: Ansible dynamic inventory plugin for Ansible Tower. version_added: "2.7" description: - Reads inventories from Ansible Tower. - Supports reading configuration from both YAML config file and environment variables. - If reading from the YAML file, the file name must end with tower.(yml|yaml) or tower_inventory.(yml|yaml), the path in the command would be /path/to/tower_inventory.(yml|yaml). If some arguments in the config file are missing, this plugin will try to fill in missing arguments by reading from environment variables. - If reading configurations from environment variables, the path in the command must be @tower_inventory. options: plugin: description: the name of this plugin, it should always be set to 'tower' for this plugin to recognize it as it's own. env: - name: ANSIBLE_INVENTORY_ENABLED required: True choices: ['tower'] host: description: The network address of your Ansible Tower host. type: string env: - name: TOWER_HOST required: True username: description: The user that you plan to use to access inventories on Ansible Tower. type: string env: - name: TOWER_USERNAME required: True password: description: The password for your Ansible Tower user. type: string env: - name: TOWER_PASSWORD required: True inventory_id: description: - The ID of the Ansible Tower inventory that you wish to import. - This is allowed to be either the inventory primary key or its named URL slug. - Primary key values will be accepted as strings or integers, and URL slugs must be strings. - Named URL slugs follow the syntax of "inventory_name++organization_name". type: raw env: - name: TOWER_INVENTORY required: True validate_certs: description: Specify whether Ansible should verify the SSL certificate of Ansible Tower host. type: bool default: True env: - name: TOWER_VERIFY_SSL required: False aliases: [ verify_ssl ] include_metadata: description: Make extra requests to provide all group vars with metadata about the source Ansible Tower host. type: bool default: False version_added: "2.8" sA # Before you execute the following commands, you should make sure this file is in your plugin path, # and you enabled this plugin. # Example for using tower_inventory.yml file plugin: tower host: your_ansible_tower_server_network_address username: your_ansible_tower_username password: your_ansible_tower_password inventory_id: the_ID_of_targeted_ansible_tower_inventory # Then you can run the following command. # If some of the arguments are missing, Ansible will attempt to read them from environment variables. # ansible-inventory -i /path/to/tower_inventory.yml --list # Example for reading from environment variables: # Set environment variables: # export TOWER_HOST=YOUR_TOWER_HOST_ADDRESS # export TOWER_USERNAME=YOUR_TOWER_USERNAME # export TOWER_PASSWORD=YOUR_TOWER_PASSWORD # export TOWER_INVENTORY=THE_ID_OF_TARGETED_INVENTORY # Read the inventory specified in TOWER_INVENTORY from Ansible Tower, and list them. # The inventory path must always be @tower_inventory if you are reading all settings from environment variables. # ansible-inventory -i @tower_inventory --list N(tsix(tRequestt urllib_errortConnectionErrortsocketthttplib(tto_textt to_native(tAnsibleParserErrortAnsibleOptionsError(tBaseInventoryPlugin(t ensure_type(turljointInventoryModulecB`s2eZdZeZd„Zd„Zed„ZRS(ttowercC`sôy|j|ƒ}Wn‰ttjtjtjfk rž}djdt |ƒƒ}t t |ddƒƒr|djdt |j ƒƒƒ7}nt|ƒ‚nXytj|j ƒƒSWn7ttfk rï}tdjdt |ƒƒƒ‚nXdS(sEMakes the request to given URL, handles errors, returns JSON s'Connection to remote host failed: {err}terrtreads with message: {err_msg}terr_msgs%Failed to parse json from host: {err}N(tgetRRtURLErrorRterrorRt HTTPExceptiontformatR tcallabletgetattrtNoneRR tjsontloadst ValueErrort TypeError(tselftrequest_handlert tower_urltresponsetet n_error_msg((sC/usr/lib/python2.7/site-packages/ansible/plugins/inventory/tower.pyt make_request|s$%cC`sI|jdƒrt|_tStt|ƒj|ƒrA|jdƒStSdS(Ns@tower_inventorystower_inventory.ymlstower_inventory.yamls tower.ymls tower.yaml(stower_inventory.ymlstower_inventory.yamls tower.ymls tower.yaml(tendswithtTruetno_config_file_suppliedtsuperRt verify_filetFalse(R!tpath((sC/usr/lib/python2.7/site-packages/ansible/plugins/inventory/tower.pyR,s   c C`s²tt|ƒj|||ƒ|j rHtjj|ƒrH|j|ƒn|jdƒ}t j d|ƒs~dj d|ƒ}nt d|jdƒd|jdƒd t d |jd ƒƒ}|jd ƒ}t|tƒrít|d d ƒ}nGyt|dƒ}Wn1tk r3}tdj dt|ƒƒƒ‚nX|jddƒ}dj d|ƒ} t|| ƒ} |j|| ƒ}x-|D]%} | dkr€|jj| ƒq€q€W|dd} xctj| ƒD]R\} } |jj| ƒx3tj| ƒD]"\}}|jj| ||ƒqóWqÇWxétj|ƒD]Ø\} }| dkr´| dkr´x-|jdgƒD]} |jj| | ƒqdWx0|jdgƒD]}|jj| |ƒq”Wn| dkr-xBtj|jdiƒƒD]"\}}|jj| ||ƒqÜWq-q-W|jdƒr¡t|dƒ}|j||ƒ}i}|jdiƒjddƒ|ds"B   (