Browse Source

add ansible module

nico 8 years ago
parent
commit
b73c5224b4
6 changed files with 81 additions and 4 deletions
  1. 8 1
      brain.yml
  2. 1 0
      neurons/__init__.py
  3. 1 0
      neurons/ansible_tasks/__init__.py
  4. 39 0
      neurons/ansible_tasks/ansible_tasks.py
  5. 25 0
      tasks.yml
  6. 7 3
      test.py

+ 8 - 1
brain.yml

@@ -63,4 +63,11 @@
     when:
       - order: "arrête la musique"
       - order: "stop la musique"
-      - order: "éteins la musique"
+      - order: "éteins la musique"
+
+  - name: "Ansible test"
+    neurons:
+      - ansible_tasks: "tasks.yml"
+      - say: "Tache terminée"
+    when:
+      - order: "playbook"

+ 1 - 0
neurons/__init__.py

@@ -2,3 +2,4 @@ from say import Say
 from systemdate import Systemdate
 from script import Script
 from command import Command
+from ansible_tasks import Ansible_tasks

+ 1 - 0
neurons/ansible_tasks/__init__.py

@@ -0,0 +1 @@
+from ansible_tasks import Ansible_tasks

+ 39 - 0
neurons/ansible_tasks/ansible_tasks.py

@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+from collections import namedtuple
+from ansible.parsing.dataloader import DataLoader
+from ansible.vars import VariableManager
+from ansible.inventory import Inventory
+from ansible.playbook import Playbook
+from ansible.executor.playbook_executor import PlaybookExecutor
+
+from core import Neurone
+
+
+class Ansible_tasks(Neurone):
+    def __init__(self, task_file):
+        Neurone.__init__(self)
+
+        Options = namedtuple('Options',
+                             ['connection', 'forks', 'become', 'become_method', 'become_user', 'check', 'listhosts',
+                              'listtasks', 'listtags', 'syntax', 'module_path'])
+
+        variable_manager = VariableManager()
+        loader = DataLoader()
+        options = Options(connection='local', forks=100, become=None, become_method=None, become_user=None, check=False,
+                          listhosts=False, listtasks=False, listtags=False, syntax=False, module_path="")
+        passwords = dict(vault_pass='secret')
+
+        inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
+        variable_manager.set_inventory(inventory)
+        playbooks = [task_file]
+
+        executor = PlaybookExecutor(
+            playbooks=playbooks,
+            inventory=inventory,
+            variable_manager=variable_manager,
+            loader=loader,
+            options=options,
+            passwords=passwords)
+
+        executor.run()

+ 25 - 0
tasks.yml

@@ -0,0 +1,25 @@
+---
+- name: Playbook
+  hosts: localhost
+  gather_facts: no
+  connection: local
+
+  tasks:
+    - shell: /usr/bin/uptime
+      register: shell_out
+
+    - debug: msg="{{ shell_out.stdout }}"
+
+
+    - name: "Call api"
+      uri:
+          url: "http://192.168.0.17:8000/app"
+          HEADER_Content-Type: "application/json"
+          method: POST
+          user: admin
+          password: secret
+          force_basic_auth: yes
+          status_code: 201
+          body_format: json
+          body: >
+            {"app_name": "music", "state": "stop"}

+ 7 - 3
test.py

@@ -13,10 +13,14 @@ from core.OrderListener import OrderListener
 # order = "lance script jarvis"
 
 # run command
-# order = "ferme les volets"
-# order_analyser = OrderAnalyser(order)
+order = "playbook"
+order_analyser = OrderAnalyser(order)
+
+order_analyser.start()
+# from neurons.ansible_tasks.ansible_tasks import Ansible_tasks
 #
-# order_analyser.start()
+# tasks_file = "tasks.yml"
+# ansible_tasks = Ansible_tasks(tasks_file)