Vorheriger Artikel: Ansible selbst erstellte Modulerstellung - Teil 1: Leben, für das Sie Argumente erhalten möchten-
Versuchen Sie zuerst run_command
unter Bezugnahme auf das Lehrbuch Ansible-Modulentwicklung (Python-Implementierung). Aussicht.
makefifo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ansible.module_utils.basic import AnsibleModule
#Hauptverarbeitung
#-----------------------------------------------------------
def main():
#AnsibleModule-Klasse:Modul erstellen
module = AnsibleModule(
#Argumentempfang
argument_spec=dict(
#Streit: path(str Typ,Verpflichtend)
path=dict(type='str', required=True),
#Streit: owner(str Typ,Verpflichtend)
owner=dict(type='str', required=True),
#Streit: group(str Typ,Verpflichtend)
group=dict(type='str', required=True),
#Streit: mode(str Typ,Verpflichtend)
mode=dict(type='str', required=True),
),
#Aktivieren Sie die Argumentprüfung
supports_check_mode=True
)
#Mach es ohne nachzudenken
rc, stdout, stderr = module.run_command("/bin/touch /tmp/udon.txt")
#Befehlsergebnis zurückgeben
module.exit_json(
changed=True,
rc=rc,
stdout=stdout,
stderr=stderr
)
if __name__ == '__main__':
main()
Ausführung ~
$ 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"
Insgesamt 0
-rw-r--r--.1 Wurzel Wurzel 0 29. Mai 10:45 2020 udon.txt
-rw-------.1 Wurzel Wurzel 0 27. Mai 06:34 2020 yum.log
Gut.
Verwenden Sie in Eile path
und versuchen Sie mkfifo
. Besitzer
wird später kommen.
Übrigens ist mir aufgefallen, dass ich hier den Namen geändert habe: "Es ist nicht" makefifo``, sondern "mkfifo".
mkfifo.py
#Ich möchte den Pfad verwenden
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo ")
Nun, hier ... was machst du? Eigentlich ist es mein erstes Mal, dass ich Python benutze, also weiß ich nicht, wie man Variablen kombiniert.
Als ich dann nach ping.py
suchte, bezog ich mich auf [[für Anfänger von Python] Bedeutung des Sterns (*) im Funktionsargument](https://dev.classmethod.jp/articles/what-does-asterisk] Es ist geschrieben wie -mean-at-args /)!
def loop2(before, *args, after):
print(before)
for arg in args:
print(arg + '!')
print(after)
Ich sehe, Sie können Zeichenfolgen mit +
kombinieren.
mkfifo.py
#Ich möchte den Pfad verwenden
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo " + )
... nun, was ist diese Variable? Ich verstehe, dass es wie "Hash" in "Perl" ist, das "Diktat" genannt wird.
Ah! Dies wurde auch von [Ansible Modulentwicklung (Python-Implementierung)] geschrieben (https://dev.classmethod.jp/articles/ansible-develop-module-python/)!
print '{"message_key":"%s"}' % (module.params['message'])
Das heißt das!
mkfifo.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ansible.module_utils.basic import AnsibleModule
#Hauptverarbeitung
#-----------------------------------------------------------
def main():
#AnsibleModule-Klasse:Modul erstellen
module = AnsibleModule(
#Argumentempfang
argument_spec=dict(
#Streit: path(str Typ,Verpflichtend)
path=dict(type='str', required=True),
#Streit: owner(str Typ,Verpflichtend)
owner=dict(type='str', required=True),
#Streit: group(str Typ,Verpflichtend)
group=dict(type='str', required=True),
#Streit: mode(str Typ,Verpflichtend)
mode=dict(type='str', required=True),
),
#Aktivieren Sie die Argumentprüfung
supports_check_mode=True
)
#Ich möchte den Pfad verwenden
rc, stdout, stderr = module.run_command("/usr/bin/mkfifo " + module.params['path'])
#Befehlsergebnis zurückgeben
module.exit_json(
changed=True,
rc=rc,
stdout=stdout,
stderr=stderr
)
if __name__ == '__main__':
main()
Jetzt ist es voll! Lauf! !!
$ 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"
Insgesamt 0
-rw-r--r--.1 Wurzel Wurzel 0 29. Mai 10:45 2020 udon.txt
prw-r--r--.1 Wurzel Wurzel 0 29. Mai 10:54 2020 udon_pipe
-rw-------.1 Wurzel Wurzel 0 27. Mai 06:34 2020 yum.log
Okay, ich mache nach und nach Fortschritte. Bis heute.
Recommended Posts