Article précédent: Création d'un module Ansible self-made-Part 1: Life you want to receive arguments-
--J'ai fait un modèle du module
Essayez d'abord run_command
, en vous référant au manuel Développement du module Ansible (implémentation Python) Vue.
makefifo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ansible.module_utils.basic import AnsibleModule
#Traitement principal
#-----------------------------------------------------------
def main():
#Classe AnsibleModule:Créer un module
module = AnsibleModule(
#Réception des arguments
argument_spec=dict(
#argument: path(type de str,Obligatoire)
path=dict(type='str', required=True),
#argument: owner(type de str,Obligatoire)
owner=dict(type='str', required=True),
#argument: group(type de str,Obligatoire)
group=dict(type='str', required=True),
#argument: mode(type de str,Obligatoire)
mode=dict(type='str', required=True),
),
#Activer la vérification des arguments
supports_check_mode=True
)
#Faites-le sans réfléchir
rc, stdout, stderr = module.run_command("/bin/touch /tmp/udon.txt")
#Résultat de la commande de retour
module.exit_json(
changed=True,
rc=rc,
stdout=stdout,
stderr=stderr
)
if __name__ == '__main__':
main()
Exécution ~
$ 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 racine racine 0 29 mai 10:45 2020 udon.txt
-rw-------.1 racine racine 0 27 mai 06:34 2020 yum.log
Bien.
En toute hâte, utilisez chemin '' et essayez
mkfifo ''. Je reviendrai sur «propriétaire» plus tard.
Au fait, j'ai remarqué que j'ai changé le nom ici, "Ce n'est pas" makefifo ", mais" mkfifo ".
mkfifo.py
#Je veux utiliser le chemin
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo ")
Eh bien, ici ... qu'est-ce que tu fais? En fait, c'est la première fois que j'utilise Python '', donc je ne sais pas comment combiner des variables. Ensuite, quand j'ai recherché
ping.py``, je faisais référence à [[pour les débutants de python] Signification de l'astérisque (*) dans l'argument de la fonction](https://dev.classmethod.jp/articles/what-does-asterisk C'est écrit comme -mean-at-args /)!
def loop2(before, *args, after):
print(before)
for arg in args:
print(arg + '!')
print(after)
Je vois, vous pouvez combiner des chaînes avec `` + ''.
mkfifo.py
#Je veux utiliser le chemin
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo " + )
... eh bien, quelle est cette variable? Je comprends que c'est comme Hash '' dans
perl '' appelé `` type dict ''.
Ah! Cela a également été écrit par Développement de module Ansible (implémentation Python)!
print '{"message_key":"%s"}' % (module.params['message'])
Ça veut dire ça!
mkfifo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ansible.module_utils.basic import AnsibleModule
#Traitement principal
#-----------------------------------------------------------
def main():
#Classe AnsibleModule:Créer un module
module = AnsibleModule(
#Réception des arguments
argument_spec=dict(
#argument: path(type de str,Obligatoire)
path=dict(type='str', required=True),
#argument: owner(type de str,Obligatoire)
owner=dict(type='str', required=True),
#argument: group(type de str,Obligatoire)
group=dict(type='str', required=True),
#argument: mode(type de str,Obligatoire)
mode=dict(type='str', required=True),
),
#Activer la vérification des arguments
supports_check_mode=True
)
#Je veux utiliser le chemin
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo " + module.params['path'])
#Résultat de la commande de retour
module.exit_json(
changed=True,
rc=rc,
stdout=stdout,
stderr=stderr
)
if __name__ == '__main__':
main()
Maintenant c'est plein! Courir! !!
$ 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 racine racine 0 29 mai 10:45 2020 udon.txt
prw-r--r--.1 racine racine 0 29 mai 10:54 2020 udon_pipe
-rw-------.1 racine racine 0 27 mai 06:34 2020 yum.log
D'accord, je progresse petit à petit. Jusqu'à aujourd'hui.
Recommended Posts