import yaml\r
import sys\r
+import os\r
from jinja2 import Environment\r
+try:\r
+ import json\r
+except ImportError:\r
+ import simplejson as json\r
\r
INVENTORY_TEMPLATE = """\r
[all]\r
-{% for host, ip in hosts.iteritems() %}\r
-{{ host }} ansible_ssh_host={{ ip }} ansible_ssh_pass=root ansible_user=root\r
+{% for host, vales in hostvars.iteritems() %}\r
+{{ host }} ansible_ssh_host={{ vales['ansible_ssh_host'] }} \\r
+ansible_ssh_pass=root ansible_user=root\r
{% endfor %}\r
[kube-master]\r
-host1\r
-host2\r
+{% for host in kube_master %}\r
+{{ host }}\r
+{% endfor %}\r
\r
[etcd]\r
-host1\r
-host2\r
-host3\r
+{% for host in etcd %}\r
+{{ host }}\r
+{% endfor %}\r
\r
[kube-node]\r
-host2\r
-host3\r
-host4\r
-host5\r
+{% for host in kube_node %}\r
+{{ host }}\r
+{% endfor %}\r
\r
[k8s-cluster:children]\r
kube-node\r
"""\r
\r
\r
-def create_inventory_file(inventories_path, hosts):\r
- content = Environment().from_string(INVENTORY_TEMPLATE).render(hosts=hosts)\r
+def _byteify(data, ignore_dicts=False):\r
+\r
+ if isinstance(data, unicode):\r
+ return data.encode('utf-8')\r
+ if isinstance(data, list):\r
+ return [_byteify(item, ignore_dicts=True) for item in data]\r
+ if isinstance(data, dict) and not ignore_dicts:\r
+ return {\r
+ _byteify(key, ignore_dicts=True):\r
+ _byteify(value, ignore_dicts=True)\r
+ for key, value in data.iteritems()\r
+ }\r
+ return data\r
+\r
+\r
+def load_inventory(inventory):\r
+ if not os.path.exists(inventory):\r
+ raise RuntimeError('file: %s not exist' % inventory)\r
+ with open(inventory, 'r') as fd:\r
+ return json.load(fd, object_hook=_byteify)\r
+\r
+\r
+def create_inventory_file(inventories_path,\r
+ hostvars, kube_master, etcd, kube_node):\r
+ content = Environment().from_string(INVENTORY_TEMPLATE).render(\r
+ hostvars=hostvars, kube_master=kube_master,\r
+ etcd=etcd, kube_node=kube_node)\r
with open(inventories_path, 'w+') as f:\r
f.write(content)\r
\r
\r
-def fetch_all_sorted_external_ip(ip_cfg):\r
- hosts = {}\r
- for host, settings in ip_cfg.iteritems():\r
- external = settings["external"]["ip"]\r
- hosts[host] = external\r
- return hosts\r
-\r
+def main(inventories_path, local_inventory):\r
+ inventory_data = load_inventory(local_inventory)\r
+ hostvars = inventory_data['_meta']['hostvars']\r
+ kube_node = inventory_data['kube_node']['hosts']\r
+ kube_master = inventory_data['kube_master']['hosts']\r
+ etcd = inventory_data['etcd']['hosts']\r
\r
-def main(inventories_path, ip_cfg):\r
- hosts = fetch_all_sorted_external_ip(ip_cfg)\r
- create_inventory_file(inventories_path, hosts)\r
+ create_inventory_file(inventories_path,\r
+ hostvars, kube_master, etcd, kube_node)\r
\r
\r
if __name__ == "__main__":\r
path = yaml.load(sys.argv[1])\r
- ipv_cfg = yaml.load(sys.argv[2])\r
+ local_inventory = yaml.load(sys.argv[2])\r
\r
- main(path, ipv_cfg)\r
+ main(path, local_inventory)\r
tags:
- ansible
+- name: copy inventoriy.json file
+ copy:
+ src: /var/ansible/run/kubernetes-opnfv2/inventories/inventory.json
+ dest: /tmp/inventory.json
+ tags:
+ - ansible
+
- name: generate kargo inventories
shell: >
python /tmp/generate_inventories.py \
"/opt/kargo_k8s/inventory/inventory.cfg" \
- "{{ ip_settings | to_json }}"
+ "/tmp/inventory.json"
tags:
- ansible
'display_name': 'ansible-kubernetes',
'template': 'ansible-kubernetes.tmpl',
'roles': [
- 'controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ 'kube_master', 'etcd', 'kube_node'
],
}]
'playbook_file': 'site.yml',
'inventory_file': 'inventory.py',
'inventory_json_file': 'inventory.json',
- 'inventory_group': ['controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph_adm', 'ceph_mon', 'ceph_osd', 'moon'],
+ 'inventory_group': ['kube_master', 'etcd', 'kube_node'],
'group_variable': 'all',
'etc_hosts_path': 'roles/pre-k8s/templates/hosts',
'runner_dirs': ['roles','kubernetes/roles']
ADAPTER_NAME = 'kubernetes'
ROLES = [{
- 'role': 'allinone-compute',
- 'display_name': 'all in one',
- 'description': 'All in One'
-}, {
- 'role': 'controller',
- 'display_name': 'controller node',
- 'description': 'Controller Node'
-}, {
- 'role': 'compute',
- 'display_name': 'compute node',
- 'description': 'Compute Node'
-}, {
- 'role': 'storage',
- 'display_name': 'storage node',
- 'description': 'Storage Node'
-}, {
- 'role': 'network',
- 'display_name': 'network node',
- 'description': 'Network Node'
-}, {
- 'role': 'compute-worker',
- 'display_name': 'Compute worker node',
- 'description': 'Compute worker node'
-}, {
- 'role': 'compute-controller',
- 'display_name': 'Compute controller node',
- 'description': 'Compute controller node'
-}, {
- 'role': 'network-server',
- 'display_name': 'Network server node',
- 'description': 'Network server node'
-}, {
- 'role': 'database',
- 'display_name': 'Database node',
- 'description': 'Database node'
-}, {
- 'role': 'messaging',
- 'display_name': 'Messaging queue node',
- 'description': 'Messaging queue node'
-}, {
- 'role': 'image',
- 'display': 'Image node',
- 'description': 'Image node'
-}, {
- 'role': 'dashboard',
- 'display': 'Dashboard node',
- 'description': 'Dashboard node'
-}, {
- 'role': 'identity',
- 'display': 'Identity node',
- 'description': 'Identity node'
-}, {
- 'role': 'storage-controller',
- 'display': 'Storage controller node',
- 'description': 'Storage controller node'
-}, {
- 'role': 'storage-volume',
- 'display': 'Storage volume node',
- 'description': 'Storage volume node'
-}, {
- 'role': 'network-worker',
- 'display': 'Network worker node',
- 'description': 'Network worker node'
-}, {
- 'role': 'odl',
- 'display': 'open day light',
- 'description': 'odl node',
- 'optional': True
-}, {
- 'role': 'onos',
- 'display': 'open network operating system',
- 'description': 'onos node',
- 'optional': True
-}, {
- 'role': 'opencontrail',
- 'display': 'open contrail',
- 'description': 'opencontrail node',
- 'optional': True
-}, {
- 'role': 'ha',
- 'display': 'Cluster with HA',
- 'description': 'Cluster with HA node'
-}, {
- 'role': 'ceph-adm',
- 'display': 'Ceph Admin Node',
- 'description': 'Ceph Admin Node',
- 'optional': True
-}, {
- 'role': 'ceph-mon',
- 'display': 'Ceph Monitor Node',
- 'description': 'Ceph Monitor Node',
- 'optional': True
-}, {
- 'role': 'ceph-osd',
- 'display': 'Ceph Storage Node',
- 'description': 'Ceph Storage Node',
- 'optional': True
-}, {
- 'role': 'ceph-osd-node',
- 'display': 'Ceph osd install from node',
- 'description': '',
- 'optional': True
-}, {
- 'role': 'ceph',
- 'display': 'ceph node',
- 'description': 'ceph node',
- 'optional': True
-}, {
- 'role': 'sec-patch',
- 'display': 'sec-patch node',
- 'description': 'Security Patch Node',
- 'optional': True
-}]
+ 'role': 'kube_master',
+ 'display_name': 'kubnernets master node',
+ 'description': ' include kube-api,kube-scheduler'
+}, {
+ 'role': 'etcd',
+ 'display_name': 'etcd node',
+ 'description': 'etcd Node'
+}, {
+ 'role': 'kube_node',
+ 'display_name': 'kube node',
+ 'description': 'kube Node'
+}
+]
# localhost
127.0.0.1 localhost
-#set controllers = $getVar('controller', [])
-#set computes = $getVar('compute', [])
-#if not $isinstance($controllers, list)
- #set controllers = [$controllers]
+#set kube_masters = $getVar('kube_master', [])
+#set kube_nodes = $getVar('kube_node', [])
+#if not $isinstance($kube_masters, list)
+ #set kube_masters = [$kube_masters]
#end if
-#if not $isinstance($compute, list)
- #set computes = [$computes]
+#if not $isinstance($kube_nodes, list)
+ #set kube_nodes = [$kube_nodes]
#end if
-# controller
-#for worker in $controllers
+# kube_master
+#for worker in $kube_masters
#set worker_hostname = $worker.hostname
#set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
$worker_ip $worker_hostname
#end for
-# compute
-#for worker in $computes
+# kube_node
+#for worker in $kube_nodes
#set worker_hostname = $worker.hostname
#set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
$worker_ip $worker_hostname
#set has = $getVar('ha', [])
#set ha_vip = $getVar('ha_vip', [])
-#set controllers = $getVar('controller', [])
-#set computers = $getVar('compute', [])
+#set kube_masters = $getVar('kube_master', [])
+#set kube_nodes = $getVar('kube_node', [])
enable_secgroup: $getVar('enable_secgroup', True)
enable_fwaas: $getVar('enable_fwaas', True)
sys_intf_mappings: $sys_intf_mappings
deploy_type: $getVar('deploy_type', 'virtual')
-public_cidr: $computers[0]['install']['subnet']
+public_cidr: $kube_nodes[0]['install']['subnet']
storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
hosts:
- name: host1
roles:
- - controller
- - ha
- - ceph-adm
- - ceph-mon
+ - kube_master
+ - etcd
- name: host2
roles:
- - controller
- - ha
- - ceph-mon
+ - kube_master
+ - etcd
- name: host3
roles:
- - controller
- - ha
- - ceph-mon
+ - kube_master
+ - etcd
- name: host4
roles:
- - compute
- - ceph-osd
+ - kube_node
- name: host5
roles:
- - compute
- - ceph-osd
+ - kube_node