Hi all,

I am trying to write a python script to run kuberspray 
<https://github.com/kubernetes-sigs/kubespray>'s ansible-playbook.
Basically, when using kubespray, all I need to do is get into kubespray's 
folder and type command.
ansible-playbook -i inventory/mycluster/hosts.ini cluster.yml
Tell ansible-playbook where the inventory and playbook file is.
And ansible will include all the group_vars in 
the  inventory/mycluster/group_vars automatically.

'kubespray/inventory/mycluster/group_vars'

Here is my python script trying to call ansible-playbook to do the same 
thing.
Based on some internet examples and the document from ansible webpage.
But when I run this script, it shows some error about the undefined 
variables.
How to import all the variables inside the group_vars?
import os,sys,json
import ansible.constants as C
from ansible.parsing.dataloader import  DataLoader
from ansible.vars.manager import  VariableManager
from ansible.inventory.manager import  InventoryManager
from ansible.playbook import Play
from ansible.executor.task_queue_manager import  TaskQueueManager
from ansible.executor.playbook_executor import  PlaybookExecutor
from ansible.plugins.callback import CallbackBase
from ansible.inventory.host import  Host,Group
from  collections import namedtuple


inventoryPath = "/home/jace/x-k8s/kubespray/inventory/mycluster/hosts.ini"
playbookPath = "/home/jace/x-k8s/kubespray/cluster.yml"


loader = DataLoader()
myinven = InventoryManager(loader=loader,sources=[inventoryPath])
print(myinven.get_groups_dict())


varmanager = VariableManager(loader=loader,inventory=myinven)


Options = namedtuple('Options',[
                'connection','module_path', 'forks', 'timeout',  
'remote_user',
                'ask_pass', 'private_key_file', 'ssh_common_args', 
'ssh_extra_args', 'sftp_extra_args',
                'scp_extra_args', 'become', 'become_method', 'become_user', 
'ask_value_pass', 'verbosity',
                'check', 'listhosts', 'listtasks', 'listtags', 'syntax',
'diff'
])


options = Options(connection='smart', module_path=None, forks=100, timeout=
10,
                remote_user='root', ask_pass=False, private_key_file=None, 
ssh_common_args=None, ssh_extra_args=None,
                sftp_extra_args=None, scp_extra_args=None, become=None, 
become_method=None,
                become_user='root', ask_value_pass=False, verbosity=None, 
check=False, listhosts=False,
                listtasks=False, listtags=False, syntax=False, diff=True)


passwords = {}
playbook = PlaybookExecutor(playbooks=[playbookPath],
                            inventory=myinven,
                            variable_manager=varmanager,
                            loader=loader,
                            options=options,
                            passwords=passwords)
playbook.run()

Tree of group_vars
jace@ansible:~/x-k8s/kubespray/inventory/mycluster/group_vars$ tree .
.
├── all
│   ├── all.yml
│   ├── azure.yml
│   ├── coreos.yml
│   ├── docker.yml
│   ├── oci.yml
│   └── openstack.yml
├── etcd.yml
└── k8s-cluster
    ├── addons.yml
    ├── k8s-cluster.yml
    ├── k8s-net-calico.yml
    ├── k8s-net-canal.yml
    ├── k8s-net-cilium.yml
    ├── k8s-net-contiv.yml
    ├── k8s-net-flannel.yml
    ├── k8s-net-kube-router.yml
    └── k8s-net-weave.yml

Ansible version : 2.7.8
Python version : 3.5.2

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/73fce3dc-e6a5-462a-b913-26889fa00e83%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to