mirror of
https://github.com/geerlingguy/ansible-role-kubernetes.git
synced 2024-11-18 19:10:39 +01:00
Merge branch 'master' into master
This commit is contained in:
commit
a256d2cf6e
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
*.retry
|
*.retry
|
||||||
tests/test.sh
|
*/__pycache__
|
||||||
|
*.pyc
|
||||||
|
36
.travis.yml
36
.travis.yml
@ -1,25 +1,31 @@
|
|||||||
---
|
---
|
||||||
|
language: python
|
||||||
services: docker
|
services: docker
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- distro: centos7
|
global:
|
||||||
- distro: ubuntu1604
|
- ROLE_NAME: kubernetes
|
||||||
- distro: debian9
|
matrix:
|
||||||
|
- MOLECULE_DISTRO: centos7
|
||||||
|
MOLECULE_DOCKER_COMMAND: /usr/lib/systemd/systemd
|
||||||
|
- MOLECULE_DISTRO: ubuntu1604
|
||||||
|
MOLECULE_DOCKER_COMMAND: /lib/systemd/systemd
|
||||||
|
- MOLECULE_DISTRO: debian9
|
||||||
|
MOLECULE_DOCKER_COMMAND: /lib/systemd/systemd
|
||||||
|
|
||||||
|
install:
|
||||||
|
# Install test dependencies.
|
||||||
|
- pip install molecule docker
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
# Use actual Ansible Galaxy role name for the project directory.
|
||||||
|
- cd ../
|
||||||
|
- mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME
|
||||||
|
- cd geerlingguy.$ROLE_NAME
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# Configure test script so we can run extra tests after playbook is run.
|
|
||||||
- export container_id=$(date +%s)
|
|
||||||
- export cleanup=false
|
|
||||||
|
|
||||||
# Download test shim.
|
|
||||||
- wget -O ${PWD}/tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/
|
|
||||||
- chmod +x ${PWD}/tests/test.sh
|
|
||||||
|
|
||||||
# Run tests.
|
# Run tests.
|
||||||
- ${PWD}/tests/test.sh
|
- molecule test
|
||||||
|
|
||||||
# Test whether Kubernetes is running correctly.
|
|
||||||
# - docker exec --tty ${container_id} command-goes-here
|
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
19
README.md
19
README.md
@ -15,6 +15,8 @@ Available variables are listed below, along with default values (see `defaults/m
|
|||||||
kubernetes_packages:
|
kubernetes_packages:
|
||||||
- name: kubelet
|
- name: kubelet
|
||||||
state: present
|
state: present
|
||||||
|
- name: kubectl
|
||||||
|
state: present
|
||||||
- name: kubeadm
|
- name: kubeadm
|
||||||
state: present
|
state: present
|
||||||
- name: kubernetes-cni
|
- name: kubernetes-cni
|
||||||
@ -22,6 +24,11 @@ Available variables are listed below, along with default values (see `defaults/m
|
|||||||
|
|
||||||
Kubernetes packages to be installed on the server. You can either provide a list of package names, or set `name` and `state` to have more control over whether the package is `present`, `absent`, `latest`, etc.
|
Kubernetes packages to be installed on the server. You can either provide a list of package names, or set `name` and `state` to have more control over whether the package is `present`, `absent`, `latest`, etc.
|
||||||
|
|
||||||
|
kubernetes_version: '1.11'
|
||||||
|
kubernetes_version_rhel_package: '1.11.3'
|
||||||
|
|
||||||
|
The minor version of Kubernetes to install. The plain `kubernetes_version` is used to pin an apt package version on Debian, and as the Kubernetes version passed into the `kubeadm init` command (see `kubernetes_version_kubeadm`). The `kubernetes_version_rhel_package` variable must be a specific Kubernetes release, and is used to pin the version on Red Hat / CentOS servers.
|
||||||
|
|
||||||
kubernetes_role: master
|
kubernetes_role: master
|
||||||
|
|
||||||
Whether the particular server will serve as a Kubernetes `master` (default) or `node`. The master will have `kubeadm init` run on it to intialize the entire K8s control plane, while `node`s will have `kubeadm join` run on them to join them to the `master`.
|
Whether the particular server will serve as a Kubernetes `master` (default) or `node`. The master will have `kubeadm init` run on it to intialize the entire K8s control plane, while `node`s will have `kubeadm join` run on them to join them to the `master`.
|
||||||
@ -35,28 +42,28 @@ Extra args to pass to `kubelet` during startup. E.g. to allow `kubelet` to start
|
|||||||
|
|
||||||
Extra args to pass to `kubeadm init` during K8s control plane initialization. E.g. to specify extra Subject Alternative Names for API server certificate, set this to: `"--apiserver-cert-extra-sans my-custom.host"`
|
Extra args to pass to `kubeadm init` during K8s control plane initialization. E.g. to specify extra Subject Alternative Names for API server certificate, set this to: `"--apiserver-cert-extra-sans my-custom.host"`
|
||||||
|
|
||||||
kubernetes_allow_pods_on_master: True
|
kubernetes_allow_pods_on_master: true
|
||||||
|
|
||||||
Whether to remove the taint that denies pods from being deployed to the Kubernetes master. If you have a single-node cluster, this should definitely be `True`. Otherwise, set to `False` if you want a dedicated Kubernetes master which doesn't run any other pods.
|
Whether to remove the taint that denies pods from being deployed to the Kubernetes master. If you have a single-node cluster, this should definitely be `True`. Otherwise, set to `False` if you want a dedicated Kubernetes master which doesn't run any other pods.
|
||||||
|
|
||||||
kubernetes_enable_web_ui: False
|
kubernetes_enable_web_ui: false
|
||||||
|
|
||||||
Whether to enable the Kubernetes web dashboard UI (only accessible on the master itself, or proxied).
|
Whether to enable the Kubernetes web dashboard UI (only accessible on the master itself, or proxied).
|
||||||
|
|
||||||
kuberenetes_debug: False
|
kuberenetes_debug: false
|
||||||
|
|
||||||
Whether to show extra debug info in Ansible's logs (e.g. the output of the `kubeadm init` command).
|
Whether to show extra debug info in Ansible's logs (e.g. the output of the `kubeadm init` command).
|
||||||
|
|
||||||
kubernetes_pod_network_cidr: '10.0.1.0/16'
|
kubernetes_pod_network_cidr: '10.244.0.0/16'
|
||||||
kubernetes_apiserver_advertise_address: ''
|
kubernetes_apiserver_advertise_address: ''
|
||||||
kubernetes_version: 'stable-1.11'
|
kubernetes_version_kubeadm: 'stable-{{ kubernetes_version }}'
|
||||||
kubernetes_ignore_preflight_errors: 'all'
|
kubernetes_ignore_preflight_errors: 'all'
|
||||||
|
|
||||||
Options passed to `kubeadm init` when initializing the Kubernetes master. The `apiserver_advertise_address` defaults to `ansible_default_ipv4.address` if it's left empty.
|
Options passed to `kubeadm init` when initializing the Kubernetes master. The `apiserver_advertise_address` defaults to `ansible_default_ipv4.address` if it's left empty.
|
||||||
|
|
||||||
kubernetes_apt_release_channel: main
|
kubernetes_apt_release_channel: main
|
||||||
kubernetes_apt_repository: "deb http://apt.kubernetes.io/ kubernetes-xenial {{ kubernetes_apt_release_channel }}"
|
kubernetes_apt_repository: "deb http://apt.kubernetes.io/ kubernetes-xenial {{ kubernetes_apt_release_channel }}"
|
||||||
kubernetes_apt_ignore_key_error: False
|
kubernetes_apt_ignore_key_error: false
|
||||||
|
|
||||||
Apt repository options for Kubernetes installation.
|
Apt repository options for Kubernetes installation.
|
||||||
|
|
||||||
|
@ -2,31 +2,34 @@
|
|||||||
kubernetes_packages:
|
kubernetes_packages:
|
||||||
- name: kubelet
|
- name: kubelet
|
||||||
state: present
|
state: present
|
||||||
- name: kubeadm
|
|
||||||
state: present
|
|
||||||
- name: kubectl
|
- name: kubectl
|
||||||
state: present
|
state: present
|
||||||
|
- name: kubeadm
|
||||||
|
state: present
|
||||||
- name: kubernetes-cni
|
- name: kubernetes-cni
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
|
kubernetes_version: '1.11'
|
||||||
|
kubernetes_version_rhel_package: '1.11.3'
|
||||||
|
|
||||||
kubernetes_role: master
|
kubernetes_role: master
|
||||||
|
|
||||||
kubernetes_kubelet_extra_args: ""
|
kubernetes_kubelet_extra_args: ""
|
||||||
kubernetes_kubeadm_init_extra_opts: ""
|
kubernetes_kubeadm_init_extra_opts: ""
|
||||||
|
|
||||||
kubernetes_allow_pods_on_master: True
|
kubernetes_allow_pods_on_master: true
|
||||||
kubernetes_enable_web_ui: True
|
kubernetes_enable_web_ui: true
|
||||||
kuberenetes_debug: False
|
kuberenetes_debug: false
|
||||||
|
|
||||||
kubernetes_pod_network_cidr: '10.0.1.0/16'
|
kubernetes_pod_network_cidr: '10.244.0.0/16'
|
||||||
kubernetes_apiserver_advertise_address: ''
|
kubernetes_apiserver_advertise_address: ''
|
||||||
kubernetes_version: 'stable-1.11'
|
kubernetes_version_kubeadm: 'stable-{{ kubernetes_version }}'
|
||||||
kubernetes_ignore_preflight_errors: 'all'
|
kubernetes_ignore_preflight_errors: 'all'
|
||||||
|
|
||||||
kubernetes_apt_release_channel: main
|
kubernetes_apt_release_channel: main
|
||||||
# Note that xenial repo is used for all Debian derivatives at this time.
|
# Note that xenial repo is used for all Debian derivatives at this time.
|
||||||
kubernetes_apt_repository: "deb http://apt.kubernetes.io/ kubernetes-xenial {{ kubernetes_apt_release_channel }}"
|
kubernetes_apt_repository: "deb http://apt.kubernetes.io/ kubernetes-xenial {{ kubernetes_apt_release_channel }}"
|
||||||
kubernetes_apt_ignore_key_error: False
|
kubernetes_apt_ignore_key_error: false
|
||||||
|
|
||||||
kubernetes_yum_arch: x86_64
|
kubernetes_yum_arch: x86_64
|
||||||
|
|
||||||
|
@ -8,16 +8,16 @@ galaxy_info:
|
|||||||
license: "license (BSD, MIT)"
|
license: "license (BSD, MIT)"
|
||||||
min_ansible_version: 2.4
|
min_ansible_version: 2.4
|
||||||
platforms:
|
platforms:
|
||||||
- name: EL
|
- name: EL
|
||||||
versions:
|
versions:
|
||||||
- 7
|
- 7
|
||||||
- name: Debian
|
- name: Debian
|
||||||
versions:
|
versions:
|
||||||
- stretch
|
- stretch
|
||||||
- name: Ubuntu
|
- name: Ubuntu
|
||||||
versions:
|
versions:
|
||||||
- xenial
|
- xenial
|
||||||
- bionic
|
- bionic
|
||||||
galaxy_tags:
|
galaxy_tags:
|
||||||
- system
|
- system
|
||||||
- containers
|
- containers
|
||||||
|
30
molecule/default/molecule.yml
Normal file
30
molecule/default/molecule.yml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
lint:
|
||||||
|
name: yamllint
|
||||||
|
options:
|
||||||
|
config-file: molecule/default/yaml-lint.yml
|
||||||
|
platforms:
|
||||||
|
- name: instance
|
||||||
|
image: geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible
|
||||||
|
command: ${MOLECULE_DOCKER_COMMAND:-"sleep infinity"}
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
- /var/lib/docker
|
||||||
|
privileged: true
|
||||||
|
pre_build_image: true
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
lint:
|
||||||
|
name: ansible-lint
|
||||||
|
playbooks:
|
||||||
|
converge: ${MOLECULE_PLAYBOOK:-playbook.yml}
|
||||||
|
scenario:
|
||||||
|
name: default
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
lint:
|
||||||
|
name: flake8
|
46
molecule/default/playbook.yml
Normal file
46
molecule/default/playbook.yml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
|
||||||
|
vars:
|
||||||
|
# Allow swap in test environments (hard to control in some Docker envs).
|
||||||
|
kubernetes_kubelet_extra_args: "--fail-swap-on=false"
|
||||||
|
docker_install_compose: false
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Update apt cache.
|
||||||
|
apt: update_cache=true cache_valid_time=600
|
||||||
|
when: ansible_os_family == 'Debian'
|
||||||
|
|
||||||
|
- name: Ensure test dependencies are installed.
|
||||||
|
package: name=iproute state=present
|
||||||
|
|
||||||
|
- name: Gather facts.
|
||||||
|
action: setup
|
||||||
|
|
||||||
|
- name: Use cgroupfs cgroup driver instead of systemd (Red Hat).
|
||||||
|
set_fact:
|
||||||
|
kubernetes_kubelet_extra_args: '"--fail-swap-on=false --cgroup-driver=cgroupfs"'
|
||||||
|
when: ansible_os_family == 'RedHat'
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: geerlingguy.docker
|
||||||
|
- role: geerlingguy.kubernetes
|
||||||
|
|
||||||
|
post_tasks:
|
||||||
|
- name: Get cluster info.
|
||||||
|
command: kubectl cluster-info
|
||||||
|
changed_when: false
|
||||||
|
register: kubernetes_info
|
||||||
|
|
||||||
|
- name: Print cluster info.
|
||||||
|
debug: var=kubernetes_info.stdout
|
||||||
|
|
||||||
|
- name: Get all running pods.
|
||||||
|
command: kubectl get pods --all-namespaces
|
||||||
|
changed_when: false
|
||||||
|
register: kubernetes_pods
|
||||||
|
|
||||||
|
- name: Print list of running pods.
|
||||||
|
debug: var=kubernetes_pods.stdout
|
14
molecule/default/tests/test_default.py
Normal file
14
molecule/default/tests/test_default.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import testinfra.utils.ansible_runner
|
||||||
|
|
||||||
|
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||||
|
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
||||||
|
|
||||||
|
|
||||||
|
def test_hosts_file(host):
|
||||||
|
f = host.file('/etc/hosts')
|
||||||
|
|
||||||
|
assert f.exists
|
||||||
|
assert f.user == 'root'
|
||||||
|
assert f.group == 'root'
|
6
molecule/default/yaml-lint.yml
Normal file
6
molecule/default/yaml-lint.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
extends: default
|
||||||
|
rules:
|
||||||
|
line-length:
|
||||||
|
max: 150
|
||||||
|
level: warning
|
@ -16,7 +16,7 @@
|
|||||||
kubelet_args_path: '/etc/systemd/system/kubelet.service.d/10-kubeadm.conf'
|
kubelet_args_path: '/etc/systemd/system/kubelet.service.d/10-kubeadm.conf'
|
||||||
kubelet_args_line: "{{ 'Environment=\"KUBELET_EXTRA_ARGS=' + kubernetes_kubelet_extra_args + '\"' }}"
|
kubelet_args_line: "{{ 'Environment=\"KUBELET_EXTRA_ARGS=' + kubernetes_kubelet_extra_args + '\"' }}"
|
||||||
kubelet_args_regexp: '^Environment='
|
kubelet_args_regexp: '^Environment='
|
||||||
when: kubelet_environment_file.stat.exists == False
|
when: kubelet_environment_file.stat.exists == false
|
||||||
|
|
||||||
- name: Configure KUBELET_EXTRA_ARGS.
|
- name: Configure KUBELET_EXTRA_ARGS.
|
||||||
lineinfile:
|
lineinfile:
|
||||||
@ -29,6 +29,6 @@
|
|||||||
- name: Reload systemd unit if args were changed.
|
- name: Reload systemd unit if args were changed.
|
||||||
systemd:
|
systemd:
|
||||||
state: restarted
|
state: restarted
|
||||||
daemon_reload: yes
|
daemon_reload: true
|
||||||
name: kubelet
|
name: kubelet
|
||||||
when: kubelet_config_file is changed
|
when: kubelet_config_file is changed
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
service:
|
service:
|
||||||
name: kubelet
|
name: kubelet
|
||||||
state: started
|
state: started
|
||||||
enabled: yes
|
enabled: true
|
||||||
|
|
||||||
- name: Check if Kubernetes has already been initialized.
|
- name: Check if Kubernetes has already been initialized.
|
||||||
stat:
|
stat:
|
||||||
@ -37,8 +37,8 @@
|
|||||||
|
|
||||||
# Set up nodes.
|
# Set up nodes.
|
||||||
- name: Get the kubeadm join command from the Kubernetes master.
|
- name: Get the kubeadm join command from the Kubernetes master.
|
||||||
shell: kubeadm token create --print-join-command
|
command: kubeadm token create --print-join-command
|
||||||
changed_when: False
|
changed_when: false
|
||||||
when: kubernetes_role == 'master'
|
when: kubernetes_role == 'master'
|
||||||
register: kubernetes_join_command_result
|
register: kubernetes_join_command_result
|
||||||
|
|
||||||
@ -47,7 +47,7 @@
|
|||||||
kubernetes_join_command: "{{ kubernetes_join_command_result.stdout }}"
|
kubernetes_join_command: "{{ kubernetes_join_command_result.stdout }}"
|
||||||
when: kubernetes_join_command_result.stdout is defined
|
when: kubernetes_join_command_result.stdout is defined
|
||||||
delegate_to: "{{ item }}"
|
delegate_to: "{{ item }}"
|
||||||
delegate_facts: True
|
delegate_facts: true
|
||||||
with_items: "{{ groups['all'] }}"
|
with_items: "{{ groups['all'] }}"
|
||||||
|
|
||||||
- include_tasks: node-setup.yml
|
- include_tasks: node-setup.yml
|
||||||
|
@ -4,19 +4,19 @@
|
|||||||
kubeadm init
|
kubeadm init
|
||||||
--pod-network-cidr={{ kubernetes_pod_network_cidr }}
|
--pod-network-cidr={{ kubernetes_pod_network_cidr }}
|
||||||
--apiserver-advertise-address={{ kubernetes_apiserver_advertise_address | default(ansible_default_ipv4.address) }}
|
--apiserver-advertise-address={{ kubernetes_apiserver_advertise_address | default(ansible_default_ipv4.address) }}
|
||||||
--kubernetes-version {{ kubernetes_version }}
|
--kubernetes-version {{ kubernetes_version_kubeadm }}
|
||||||
--ignore-preflight-errors={{ kubernetes_ignore_preflight_errors }}
|
--ignore-preflight-errors={{ kubernetes_ignore_preflight_errors }}
|
||||||
{{ kubeadm_init_opts }}
|
{{ kubeadm_init_opts }}
|
||||||
|
|
||||||
register: kubeadmin_init
|
register: kubeadmin_init
|
||||||
failed_when: False
|
failed_when: false
|
||||||
when: kubernetes_init_stat.stat.exists == False
|
when: kubernetes_init_stat.stat.exists == false
|
||||||
|
|
||||||
- name: Print the init output to screen.
|
- name: Print the init output to screen.
|
||||||
debug: var=kubeadmin_init.stdout
|
debug: var=kubeadmin_init.stdout
|
||||||
when:
|
when:
|
||||||
- kuberenetes_debug
|
- kuberenetes_debug
|
||||||
- kubernetes_init_stat.stat.exists == False
|
- kubernetes_init_stat.stat.exists == false
|
||||||
|
|
||||||
- name: Ensure .kube directory exists.
|
- name: Ensure .kube directory exists.
|
||||||
file:
|
file:
|
||||||
@ -43,12 +43,12 @@
|
|||||||
command: "kubectl taint nodes --all node-role.kubernetes.io/master-"
|
command: "kubectl taint nodes --all node-role.kubernetes.io/master-"
|
||||||
when:
|
when:
|
||||||
- kubernetes_allow_pods_on_master
|
- kubernetes_allow_pods_on_master
|
||||||
- kubernetes_init_stat.stat.exists == False
|
- kubernetes_init_stat.stat.exists == false
|
||||||
|
|
||||||
- name: Check if Kubernetes Dashboard UI service already exists.
|
- name: Check if Kubernetes Dashboard UI service already exists.
|
||||||
shell: kubectl get services --namespace kube-system | grep -q kubernetes-dashboard
|
shell: kubectl get services --namespace kube-system | grep -q kubernetes-dashboard
|
||||||
changed_when: False
|
changed_when: false
|
||||||
failed_when: False
|
failed_when: false
|
||||||
register: kubernetes_dashboard_service
|
register: kubernetes_dashboard_service
|
||||||
when: kubernetes_enable_web_ui
|
when: kubernetes_enable_web_ui
|
||||||
|
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure dependencies are installed.
|
- name: Ensure dependencies are installed.
|
||||||
apt:
|
apt:
|
||||||
name: "{{ item }}"
|
name:
|
||||||
|
- apt-transport-https
|
||||||
|
- ca-certificates
|
||||||
state: present
|
state: present
|
||||||
with_items:
|
|
||||||
- apt-transport-https
|
|
||||||
- ca-certificates
|
|
||||||
|
|
||||||
- name: Add Kubernetes apt key.
|
- name: Add Kubernetes apt key.
|
||||||
apt_key:
|
apt_key:
|
||||||
@ -18,4 +17,9 @@
|
|||||||
apt_repository:
|
apt_repository:
|
||||||
repo: "{{ kubernetes_apt_repository }}"
|
repo: "{{ kubernetes_apt_repository }}"
|
||||||
state: present
|
state: present
|
||||||
update_cache: yes
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Add Kubernetes apt preferences file to pin a version.
|
||||||
|
template:
|
||||||
|
src: apt-preferences-kubernetes.j2
|
||||||
|
dest: /etc/apt/preferences.d/kubernetes
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
yum_repository:
|
yum_repository:
|
||||||
name: kubernetes
|
name: kubernetes
|
||||||
description: Kubernetes
|
description: Kubernetes
|
||||||
enabled: yes
|
enabled: true
|
||||||
gpgcheck: yes
|
gpgcheck: true
|
||||||
repo_gpgcheck: yes
|
repo_gpgcheck: true
|
||||||
baseurl: https://packages.cloud.google.com/yum/repos/kubernetes-el7-{{ kubernetes_yum_arch }}
|
baseurl: https://packages.cloud.google.com/yum/repos/kubernetes-el7-{{ kubernetes_yum_arch }}
|
||||||
gpgkey:
|
gpgkey:
|
||||||
- https://packages.cloud.google.com/yum/doc/yum-key.gpg
|
- https://packages.cloud.google.com/yum/doc/yum-key.gpg
|
||||||
@ -24,4 +24,4 @@
|
|||||||
command: "yum -q makecache -y --disablerepo='*' --enablerepo='kubernetes'"
|
command: "yum -q makecache -y --disablerepo='*' --enablerepo='kubernetes'"
|
||||||
when: kubernetes_rpm_key is changed
|
when: kubernetes_rpm_key is changed
|
||||||
args:
|
args:
|
||||||
warn: no
|
warn: false
|
||||||
|
11
templates/apt-preferences-kubernetes.j2
Normal file
11
templates/apt-preferences-kubernetes.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Package: kubectl
|
||||||
|
Pin: version {{ kubernetes_version }}.*
|
||||||
|
Pin-Priority: 1000
|
||||||
|
|
||||||
|
Package: kubeadm
|
||||||
|
Pin: version {{ kubernetes_version }}.*
|
||||||
|
Pin-Priority: 1000
|
||||||
|
|
||||||
|
Package: kubelet
|
||||||
|
Pin: version {{ kubernetes_version }}.*
|
||||||
|
Pin-Priority: 1000
|
@ -1,11 +0,0 @@
|
|||||||
# Ansible Role tests
|
|
||||||
|
|
||||||
To run the test playbook(s) in this directory:
|
|
||||||
|
|
||||||
1. Install and start Docker.
|
|
||||||
1. Download the test shim (see .travis.yml file for the URL) into `tests/test.sh`:
|
|
||||||
- `wget -O tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/`
|
|
||||||
1. Make the test shim executable: `chmod +x tests/test.sh`.
|
|
||||||
1. Run (from the role root directory) `distro=[distro] playbook=[playbook] ./tests/test.sh`
|
|
||||||
|
|
||||||
If you don't want the container to be automatically deleted after the test playbook is run, add the following environment variables: `cleanup=false container_id=$(date +%s)`
|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: all
|
|
||||||
|
|
||||||
vars:
|
|
||||||
# Allow swap in test environments (hard to control in some Docker envs).
|
|
||||||
kubernetes_kubelet_extra_args: "--fail-swap-on=false"
|
|
||||||
docker_install_compose: False
|
|
||||||
|
|
||||||
pre_tasks:
|
|
||||||
- name: Update apt cache.
|
|
||||||
apt: update_cache=yes cache_valid_time=600
|
|
||||||
when: ansible_os_family == 'Debian'
|
|
||||||
|
|
||||||
- name: Ensure test dependencies are installed.
|
|
||||||
package: name=iproute state=present
|
|
||||||
|
|
||||||
- action: setup
|
|
||||||
|
|
||||||
- name: Use cgroupfs cgroup driver instead of systemd (Red Hat).
|
|
||||||
set_fact:
|
|
||||||
kubernetes_kubelet_extra_args: '"--fail-swap-on=false --cgroup-driver=cgroupfs"'
|
|
||||||
when: ansible_os_family == 'RedHat'
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- geerlingguy.docker
|
|
||||||
- role_under_test
|
|
@ -1,2 +1,11 @@
|
|||||||
---
|
---
|
||||||
kubelet_environment_file_path: /etc/sysconfig/kubelet
|
kubelet_environment_file_path: /etc/sysconfig/kubelet
|
||||||
|
kubernetes_packages:
|
||||||
|
- name: kubelet-{{ kubernetes_version_rhel_package }}-0
|
||||||
|
state: present
|
||||||
|
- name: kubectl-{{ kubernetes_version_rhel_package }}-0
|
||||||
|
state: present
|
||||||
|
- name: kubeadm-{{ kubernetes_version_rhel_package }}-0
|
||||||
|
state: present
|
||||||
|
- name: kubernetes-cni
|
||||||
|
state: present
|
||||||
|
Loading…
Reference in New Issue
Block a user