Previous article: Creating an Ansible self-made module-Part 1: Life you want to receive arguments-
--Made a module template --Received multiple arguments
As usual, refer to the textbook Ansible module development (Python implementation), and first try run_command
. View.
makefifo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ansible.module_utils.basic import AnsibleModule
#Main processing
#-----------------------------------------------------------
def main():
#AnsibleModule class:Create module
module = AnsibleModule(
#Argument reception
argument_spec=dict(
#argument: path(str type,Mandatory)
path=dict(type='str', required=True),
#argument: owner(str type,Mandatory)
owner=dict(type='str', required=True),
#argument: group(str type,Mandatory)
group=dict(type='str', required=True),
#argument: mode(str type,Mandatory)
mode=dict(type='str', required=True),
),
#Argument check enabled
supports_check_mode=True
)
#Do it without thinking
rc, stdout, stderr = module.run_command("/bin/touch /tmp/udon.txt")
#Return command result
module.exit_json(
changed=True,
rc=rc,
stdout=stdout,
stderr=stderr
)
if __name__ == '__main__':
main()
Execution ~
$ ansible -i test_grp 192.168.56.104 -m makefifo -M library -u root -a "path=/tmp/hoge owner=root group=root mode=0644"
192.168.56.104 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"rc": 0,
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
$ ssh [email protected] "ls -l /tmp"
Total 0
-rw-r--r--.1 root root 0 May 29 10:45 2020 udon.txt
-rw-------.1 root root 0 May 27 06:34 2020 yum.log
Good.
In a hurry, use path
and try mkfifo
. I'll come back to ```owner later. By the way, I noticed that I changed the name here, "It's not" makefifo
, but "mkfifo".
mkfifo.py
#I want to use path
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo ")
Well, here ... what are you doing? Actually, it's my first time to use Python
, so I don't know how to combine variables.
Then, when I looked up ping.py
, I used to refer to [[for beginners of python] meaning of asterisk (*) in function argument](https://dev.classmethod.jp/articles/what-does-asterisk It's written like -mean-at-args /)!
def loop2(before, *args, after):
print(before)
for arg in args:
print(arg + '!')
print(after)
I see, you can combine strings with +
.
mkfifo.py
#I want to use path
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo " + )
... well, what is this variable? I understand that it's like Hash
in perl
called dict type
.
Ah! This was also written by Ansible module development (Python implementation)!
print '{"message_key":"%s"}' % (module.params['message'])
That means this!
mkfifo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ansible.module_utils.basic import AnsibleModule
#Main processing
#-----------------------------------------------------------
def main():
#AnsibleModule class:Create module
module = AnsibleModule(
#Argument reception
argument_spec=dict(
#argument: path(str type,Mandatory)
path=dict(type='str', required=True),
#argument: owner(str type,Mandatory)
owner=dict(type='str', required=True),
#argument: group(str type,Mandatory)
group=dict(type='str', required=True),
#argument: mode(str type,Mandatory)
mode=dict(type='str', required=True),
),
#Argument check enabled
supports_check_mode=True
)
#I want to use path
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo " + module.params['path'])
#Return command result
module.exit_json(
changed=True,
rc=rc,
stdout=stdout,
stderr=stderr
)
if __name__ == '__main__':
main()
Now it's full! Run! !!
$ ansible -i test_grp 192.168.56.104 -m mkfifo -M library -u root -a "path=/tmp/udon_pipe owner=root group=root mode=0644"
192.168.56.104 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"rc": 0,
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
$ ssh [email protected] "ls -l /tmp"
Total 0
-rw-r--r--.1 root root 0 May 29 10:45 2020 udon.txt
prw-r--r--.1 root root 0 May 29 10:54 2020 udon_pipe
-rw-------.1 root root 0 May 27 06:34 2020 yum.log
Alright, I'm making progress little by little. Until today.
Recommended Posts