2. AGENDA
• 1. ANSIBLE WHAT IS THIS? AND WHY?;
• 2. ANSIBLE USE-CASES;
• 3. BENEFITS OF USING ANSIBLE;
• 4. ANSIBLE ON MY PROJECTS;
• 5. ANSIBLE MODULES;
• 6. DEVELOPING CUSTOM MODULE FOR ANSIBLE;
• 7. Q/A
3. ANSIBLE WHAT IS THIS
• ANSIBLE IS AN OPEN-SOURCE IT AUTOMATION ENGINE, WHICH CAN REMOVE
DRUDGERY FROM YOUR WORK LIFE, AND WILL ALSO IMPROVE THE SCALABILITY,
CONSISTENCY, AND RELIABILITY OF YOUR IT ENVIRONMENT DRAMATICALLY.
• ANSIBLE IS A CONFIGURATION MANAGEMENT SYSTEM (CMS)
8. • NOTIFICATION MODULES;
• PACKAGING MODULES;
• REMOTE MANAGEMENT MODULES;
• SOURCE CONTROL MODULES;
• STORAGE MODULES;
• DATABASE MODULES;
• SYSTEM MODULES;
• UTILITIES MODULES;
• WEB INFRASTRUCTURE MODULES;
• WINDOWS MODULES
9. WHEN SHOULD YOU DEVELOP A
CUSTOM MODULE?
• HTTPS://GITHUB.COM/ANSIBLE/ANSIBLE/TREE/DEVEL/LI
B/ANSIBLE/MODULES
• DOES A SIMILAR MODULE ALREADY EXIST?
• DOES A PULL REQUEST ALREADY EXIST?
• SHOULD YOU USE OR DEVELOP AN ACTION PLUGIN
INSTEAD?
• SHOULD YOU USE A ROLE INSTEAD?
• SHOULD YOU WRITE MULTIPLE MODULES INSTEAD OF
10. PREREQUISITES
• READ DOCUMENTATIONS:
HTTPS://DOCS.ANSIBLE.COM/ANSIBLE/LATEST/DEV_GUIDE/DEVELOPING_MODULES_GENERAL.
HTML#DEVELOPING-MODULES-GENERAL
• CONFIGURING DEVELOPMENT ENVIRONMENT:
• 1.CLONE THE ANSIBLE REPOSITORY: $ GIT CLONE HTTPS://GITHUB.COM/ANSIBLE/ANSIBLE.GIT
• 2.CHANGE DIRECTORY INTO THE REPOSITORY ROOT DIR: $ CD ANSIBLE
• 3.CREATE A VIRTUAL ENVIRONMENT: $ PYTHON3 -M VENV VENV (OR FOR PYTHON
2 $ VIRTUALENV VENV. NOTE, THIS REQUIRES YOU TO INSTALL THE VIRTUALENV
PACKAGE: $ PIP INSTALL VIRTUALENV)
• 4.ACTIVATE THE VIRTUAL ENVIRONMENT: $ . VENV/BIN/ACTIVATE
• 5.INSTALL DEVELOPMENT REQUIREMENTS: $ PIP INSTALL -R REQUIREMENTS.TXT
• 6.RUN THE ENVIRONMENT SETUP SCRIPT FOR EACH NEW DEV SHELL
11. REQUIREMENTS
•INTERACTION WITH WOTD SERVICE VIA API;
•CREATE AND REMOVE SERVICE DEFINITION;
•UPDATE OR AVOID CHANGING SERVICE
DEFINITION;
•WORK WITH JSON AND YAML FORMAT;
•INTERACTION WITH LINUX DAEMON
12. DEVELOPING PROCESS
• FOLDER LIBRARY;
• PYTHON FILE WITH CODE;
• IMPORT ALL REQUIRED PYTHON MODULES;
• CREATE METHODS ACCORDING TO REQUIREMENTS AND
MAIN METHOD;
• CREATE PYTHON META-CLASS FOR DOCUMENTATION;
• TEST PROCESS;
• CREATE PULL REQUEST FOR MERGE AND WORK WITH
COMMENTS;
14. IMPORT ALL REQUIRED PYTHON MODULES
• IMPORT JSON;
• IMPORT REQUESTS;
• IMPORT OS;
• IMPORT SYS;
• FROM ANSIBLE.MODULE_UTILS.BASIC IMPORT
ANSIBLEMODULE;
• FROM __FUTURE__ IMPORT ABSOLUTE_IMPORT, DIVISION,
PRINT_FUNCTION
15. CREATE METHODS ACCORDING TO
REQUIREMENTS AND MAIN METHOD
• WOTD_RELOAD_RESTART;
• IS_SERVICE_LIST_UPDATE;
• UPDATE_CONFIG_DEFINITION;
• CREATE_CONFIG_DEFINITION;
• REMOVE_CONFIG_DEFINITION;
• SERVICE_DEFINITION_CHANGED;
• CONVERT_TO_CONFIG_API_JSON;
• MAIN
16. CREATE PYTHON META-CLASS FOR
DOCUMENTATION
• DOCUMENTATION
• MODULE: CONFIG_API
• SHORT_DESCRIPTION: INTERACTS WITH WOTD SERVICE
• DESCRIPTION: - INTERACTS WITH CONFIG-API SERVICE, SUPPORT JSON AND YAML TEMPLATE
FORMAT FOR SERVICES CONFIGURATION
• VERSION_ADDED: "1.0"
• OPTIONS: STATE:
• DESCRIPTION: - THE ACTION THAT CAN BE MAKE WITH SERVICE'S CONFIGURATION
• TYPE: STR CHOICES: [ PRESENT, ABSENT ]
• DEFAULT: PRESENT
19. TEST PROCESS
• USED :
•SIMPLE PLAYBOOK;
•END TO END TESTING ON MERGE REQUESTS;
• POSSIBLE TO USE :
•SANITY;
•UNIT TESTS;
•INTEGRATION TESTS
20. BEST PRACTICES AND RECOMMENDATIONS
• MODULES SHOULD RETURN ONLY RELEVANT OUTPUT;
• RETURN CODES FROM MODULES ARE ACTUALLY NOT
SIGNIFICANT;
• MODULES MUST OUTPUT VALID JSON ONLY;
• MODULES MUST BE SELF-CONTAINED IN ONE FILE TO BE
AUTO-TRANSFERRED BY ANSIBLE;
• INCLUDE A MINIMUM OF DEPENDENCIES IF POSSIBLE;
• ‘YES’, ‘NO’, ‘TRUE’, ‘FALSE’ FOR BOOLEAN TYPE