반응형
Kubespray 와 같이 많은 role 을 가진 ansible playbook 에서는 선언된 변수와 실제 할당된 값을 살펴보는 것이 쉽지 않습니다. ansible 에서는 이러한 변수들에 대한 값, 특히 hostvar 값을 볼 수 가 있습니다.
일단 먼저 inventory 파일인 hosts.ini 로 어떤 host 와 group 이 지정되었는지 확인할 수 있습니다.
$ vi inventory/k1-seungkyua/hosts.ini
[all]
k1-master01 ip=192.168.30.13
k1-master02 ip=192.168.30.14
k1-master03 ip=192.168.30.15
k1-node01 ip=192.168.30.12
k1-node02 ip=192.168.30.17
k1-node03 ip=192.168.30.18
k1-node04 ip=192.168.30.21
k1-node05 ip=192.168.30.20
[etcd]
k1-master01
k1-master02
k1-master03
[kube-master]
k1-master01
k1-master02
k1-master03
[kube-node]
k1-node01
k1-node02
k1-node03
k1-node04
k1-node05
[k8s-cluster:children]
kube-master
kube-node
다양한 그룹이 있음을 볼 수 있는데 맨 마지막의 k8s-cluster 그룹은 하위로 kube-master 와 kube-node 를 가지고 있으므로, k8s-cluster 그룹이 모든 노드를 포함한다는 것을 알 수 있습니다.
이제 ansible 명령어로 하나의 host 노드 "k1-master01" 에 대해 적용된 변수를 볼 수 있습니다.
$ ansible -i inventory/k1-seungkyua/hosts.ini -m debug -a "var=hostvars['k1-master01']" k8s-cluster
이에 대한 결과는 다음과 같습니다.
k1-node01 | SUCCESS => {
"hostvars['k1-master01']": {
"admin_token": "QVFBTmRVVlh5UmZoTlJBQTMyZTh6Qk5uajV1VElrMDJEbWFwWmc9PQ==",
"ansible_all_ipv4_addresses": [
"192.168.230.13",
"192.168.30.13",
"172.16.31.64",
"172.17.0.1",
"10.233.0.1",
"10.233.0.3",
"10.233.55.72",
"10.233.18.191"
],
"ansible_all_ipv6_addresses": [
"fe80::3ea8:2aff:fe1c:cfd4",
"fe80::5eb9:1ff:fe8c:67dc",
"fe80::42:98ff:fec4:7ad1",
"fe80::ecee:eeff:feee:eeee",
"fe80::ecee:eeff:feee:eeee"
],
"ansible_apparmor": {
"status": "enabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "05/06/2015",
"ansible_bios_version": "P89",
"ansible_cali1845c564081": {
"active": true,
"device": "cali1845c564081",
"features": {
"busy_poll": "off [fixed]",
"fcoe_mtu": "off [fixed]",
"generic_receive_offload": "on",
"generic_segmentation_offload": "on",
"highdma": "on",
"hw_tc_offload": "off [fixed]",
"l2_fwd_offload": "off [fixed]",
"large_receive_offload": "off [fixed]",
"loopback": "off [fixed]",
"netns_local": "off [fixed]",
"ntuple_filters": "off [fixed]",
"receive_hashing": "off [fixed]",
"rx_all": "off [fixed]",
"rx_checksumming": "on",
"rx_fcs": "off [fixed]",
"rx_vlan_filter": "off [fixed]",
"rx_vlan_offload": "on",
"rx_vlan_stag_filter": "off [fixed]",
"rx_vlan_stag_hw_parse": "on",
"scatter_gather": "on",
"tcp_segmentation_offload": "on",
"tx_checksum_fcoe_crc": "off [fixed]",
"tx_checksum_ip_generic": "on",
"tx_checksum_ipv4": "off [fixed]",
"tx_checksum_ipv6": "off [fixed]",
"tx_checksum_sctp": "off [fixed]",
"tx_checksumming": "on",
"tx_fcoe_segmentation": "off [fixed]",
"tx_gre_segmentation": "on",
"tx_gso_robust": "off [fixed]",
"tx_ipip_segmentation": "on",
"tx_lockless": "on [fixed]",
"tx_nocache_copy": "off",
"tx_scatter_gather": "on",
"tx_scatter_gather_fraglist": "on",
"tx_sit_segmentation": "on",
"tx_tcp6_segmentation": "on",
"tx_tcp_ecn_segmentation": "on",
"tx_tcp_segmentation": "on",
"tx_udp_tnl_segmentation": "on",
"tx_vlan_offload": "on",
"tx_vlan_stag_hw_insert": "on",
"udp_fragmentation_offload": "on",
"vlan_challenged": "off [fixed]"
},
"hw_timestamp_filters": [],
"ipv6": [
{
"address": "fe80::ecee:eeff:feee:eeee",
"prefix": "64",
"scope": "link"
}
],
"macaddress": "ee:ee:ee:ee:ee:ee",
"mtu": 1500,
"promisc": false,
"speed": 10000,
"timestamping": [
"rx_software",
"software"
],
"type": "ether"
},
"ansible_uptime_seconds": 46351496,
"ansible_user_dir": "/root",
"ansible_user_gecos": "root",
"ansible_user_gid": 0,
"ansible_user_id": "root",
"ansible_user_shell": "/bin/bash",
"ansible_user_uid": 0,
"ansible_userspace_architecture": "x86_64",
"ansible_userspace_bits": "64",
"ansible_verbosity": 0,
"ansible_version": {
"full": "2.7.7",
"major": 2,
"minor": 7,
"revision": 7,
"string": "2.7.7"
},
"ansible_virtualization_role": "host",
"ansible_virtualization_type": "kvm",
"calico_ip_auto_method": "can-reach=8.8.8.8",
"ceph_version": "mimic",
"dashboard_enabled": true,
"docker_insecure_registries": [
"tacorepo:5000"
],
"gather_subset": [
"all"
],
"global_as_num": "65000",
"group_names": [
"etcd",
"k8s-cluster",
"kube-master"
],
"groups": {
"all": [
"k1-master01",
"k1-master02",
"k1-master03",
"k1-node01",
"k1-node02",
"k1-node03",
"k1-node04",
"k1-node05"
],
"etcd": [
"k1-master01",
"k1-master02",
"k1-master03"
],
"k8s-cluster": [
"k1-node01",
"k1-node02",
"k1-node03",
"k1-node04",
"k1-node05",
"k1-master01",
"k1-master02",
"k1-master03"
],
"kube-master": [
"k1-master01",
"k1-master02",
"k1-master03"
],
"kube-node": [
"k1-node01",
"k1-node02",
"k1-node03",
"k1-node04",
"k1-node05"
],
"ungrouped": []
},
"helm_enabled": true,
"ingress_nginx_enabled": true,
"ingress_nginx_host_network": true,
"ingress_nginx_node_count": 1,
"ingress_nginx_nodeselector": {
"node-role.kubernetes.io/ingress": "true"
},
"inventory_dir": "/home/seungkyua/deploy/my-kubespray/inventory/k1-seungkyua",
"inventory_file": "/home/seungkyua/deploy/my-kubespray/inventory/k1-seungkyua/hosts.ini",
"inventory_hostname": "k1-master01",
"inventory_hostname_short": "k1-master01",
"ip": "192.168.30.13",
"ipip_mode": "Never",
"kubeadm_enabled": true,
"kubeconfig_localhost": true,
"kubectl_localhost": true,
"local_volume_provisioner_enabled": true,
"module_setup": true,
"monitors": "192.168.30.23:6789,192.168.30.24:6789,192.168.30.25:6789",
"nat_outgoing": true,
"omit": "__omit_place_holder__4491a572b322dda2550f5ce4d8005946f456f738",
"override_system_hostname": false,
"peer_with_router": true,
"peers": [
{
"as": "65000",
"router_id": "192.168.30.1"
}
],
"playbook_dir": "/home/seungkyua/deploy/my-kubespray",
"pool_name": "kubes",
"populate_inventory_to_hosts_file": false,
"storageclass_name": "rbd",
"user_id": "kube",
"user_secret_namespace": "openstack",
"user_token": "QVFDdC9CcFlpZ0o3TVJBQTV2eStjbDM5RXNLcFkzQyt0WEVHckE9PQ=="
}
}
반응형