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.