Initial commit
This commit is contained in:
commit
4789552a6e
69
README.md
Normal file
69
README.md
Normal file
@ -0,0 +1,69 @@
|
||||
# Ansible Collection - jackbenny.demo
|
||||
This is a simple demonstration of what a collection looks like and works. The
|
||||
collection is made as a part of my Swedish book about Ansible.
|
||||
|
||||
The `base` role installs some common package and sets the timezone according to
|
||||
the `timezone`-variable. The default timezone is set to Europe/Stockholm. The
|
||||
`base`-role uses the `update_cache`-role to update the package manager cache.
|
||||
|
||||
The `dummy` module demonstrates a simple module and doesn't do anything except
|
||||
check if a value is greater than 50.
|
||||
|
||||
## Content
|
||||
This collection contains the following:
|
||||
|
||||
* roles
|
||||
* base
|
||||
* update_cache
|
||||
|
||||
* modules
|
||||
* dummy
|
||||
|
||||
## Example usage
|
||||
|
||||
```
|
||||
- hosts: ankeborg
|
||||
become: true
|
||||
vars:
|
||||
timezone: Europe/Stockholm
|
||||
|
||||
tasks:
|
||||
- name: Test my dummy module
|
||||
jackbenny.demo.dummy:
|
||||
number: 51
|
||||
register: the_num
|
||||
|
||||
- name: Print the return value
|
||||
debug:
|
||||
msg: "{{ the_num }}"
|
||||
|
||||
roles:
|
||||
- jackbenny.demo.base
|
||||
|
||||
```
|
||||
|
||||
or, if your prefer to use the `collections` keyword:
|
||||
|
||||
```
|
||||
- hosts: ankeborg
|
||||
become: true
|
||||
vars:
|
||||
timezone: Europe/Stockholm
|
||||
|
||||
collections:
|
||||
- jackbenny.demo
|
||||
|
||||
tasks:
|
||||
- name: Test my dummy module
|
||||
dummy:
|
||||
number: 51
|
||||
register: the_num
|
||||
|
||||
- name: Print the return value
|
||||
debug:
|
||||
msg: "{{ the_num }}"
|
||||
|
||||
roles:
|
||||
- base
|
||||
|
||||
```
|
19
galaxy.yml
Normal file
19
galaxy.yml
Normal file
@ -0,0 +1,19 @@
|
||||
namespace: jackbenny
|
||||
name: demo
|
||||
version: 0.0.1
|
||||
readme: README.md
|
||||
authors:
|
||||
- Jack-Benny Persson <jack-benny@cyberinfo.se>
|
||||
description: Demonstration of a collection for my book about Ansible
|
||||
license:
|
||||
- GPL-2.0-or-later
|
||||
tags:
|
||||
- system
|
||||
- demo
|
||||
dependencies: {}
|
||||
build_ignore: []
|
||||
|
||||
repository: https://github.com/jackbenny/ansible-collection-demo
|
||||
documentation: https://github.com/jackbenny/ansible-collection-demo
|
||||
homepage: https://github.com/jackbenny/ansible-collection-demo
|
||||
issues: https://github.com/jackbenny/ansible-collection-demo/issues
|
73
plugins/modules/dummy.py
Normal file
73
plugins/modules/dummy.py
Normal file
@ -0,0 +1,73 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: dummy
|
||||
|
||||
short_description: This is a simply dummy module
|
||||
|
||||
version_added: "0.0.1"
|
||||
|
||||
description: This is a simply dummy module for demostrative puropses only.
|
||||
The module doesn't do anything, except check if a value is greater than 50.
|
||||
If the value is greater than 50, then the module reports a change. If the
|
||||
value is below 50, no change is reported.
|
||||
|
||||
options:
|
||||
number:
|
||||
description: The value to check if it's greater than 50.
|
||||
required: true
|
||||
type: int
|
||||
|
||||
author:
|
||||
- Jack-Benny Persson (jack-benny@cyberinfo.se)
|
||||
'''
|
||||
|
||||
EXAMPLES = r'''
|
||||
# Pass in a number
|
||||
- name: Test a number
|
||||
jackbenny.demo.dummy:
|
||||
number: 55
|
||||
'''
|
||||
|
||||
RETURN = r'''
|
||||
number:
|
||||
description: The original number passed to the module.
|
||||
type: int
|
||||
returned: always
|
||||
sample: 55
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
def run_module():
|
||||
# define arguments to the module
|
||||
module_args = dict(
|
||||
number=dict(type='int', required=True),
|
||||
)
|
||||
|
||||
# create a dict for the result
|
||||
result = dict(
|
||||
changed=False,
|
||||
number=0,
|
||||
)
|
||||
|
||||
# settings for the module
|
||||
module = AnsibleModule(
|
||||
argument_spec=module_args,
|
||||
supports_check_mode=False
|
||||
)
|
||||
|
||||
# the logic for the module
|
||||
result['number'] = module.params['number']
|
||||
if result['number'] > 50:
|
||||
result['changed']=True
|
||||
|
||||
# return the result as json
|
||||
module.exit_json(**result)
|
||||
|
||||
def main():
|
||||
run_module()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
1
roles/base/defaults/main.yml
Normal file
1
roles/base/defaults/main.yml
Normal file
@ -0,0 +1 @@
|
||||
timezone: Europe/Stockholm
|
2
roles/base/meta/main.yml
Normal file
2
roles/base/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: update_cache
|
13
roles/base/tasks/main.yml
Normal file
13
roles/base/tasks/main.yml
Normal file
@ -0,0 +1,13 @@
|
||||
- name: Install common tools
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
with_items:
|
||||
- curl
|
||||
- gnupg
|
||||
- vim
|
||||
- ca-certificates
|
||||
- s-nail
|
||||
|
||||
- name: Set the timezone
|
||||
timezone:
|
||||
name: "{{ timezone }}"
|
8
roles/update_cache/tasks/main.yml
Normal file
8
roles/update_cache/tasks/main.yml
Normal file
@ -0,0 +1,8 @@
|
||||
- name: Update cache on Debian/Ubuntu
|
||||
apt:
|
||||
update_cache: yes
|
||||
when: ansible_os_family == 'Debian'
|
||||
- name: Update cache on RedHat/CentOS/Fedora
|
||||
dnf:
|
||||
update_cache: yes
|
||||
when: ansible_os_family == 'RedHat'
|
Loading…
x
Reference in New Issue
Block a user