11 changed files with 233 additions and 76 deletions
Split View
Diff Options
-
6README.md
-
30roles/download/defaults/main.yml
-
3roles/etcd/defaults/main.yml
-
14roles/etcd/handlers/main.yml
-
27roles/etcd/tasks/configure.yml
-
14roles/etcd/tasks/install.yml
-
13roles/etcd/tasks/main.yml
-
113roles/etcd/templates/deb-etcd.initd.j2
-
54roles/etcd/templates/etcd-pod.yml
-
17roles/etcd/templates/etcd.j2
-
18roles/etcd/templates/etcd.service.j2
@ -0,0 +1,3 @@ |
|||
--- |
|||
etcd_version: v2.2.4 |
|||
etcd_bin_dir: "{{ local_release_dir }}/etcd/etcd-{{ etcd_version }}-linux-amd64/" |
@ -0,0 +1,14 @@ |
|||
--- |
|||
- name: restart systemd-etcd |
|||
command: /bin/true |
|||
notify: |
|||
- reload systemd |
|||
- restart etcd |
|||
|
|||
- name: reload systemd |
|||
command: systemctl daemon-reload |
|||
|
|||
- name: restart etcd |
|||
service: |
|||
name: etcd |
|||
state: restarted |
@ -0,0 +1,27 @@ |
|||
--- |
|||
- name: Copy etcd.service systemd file |
|||
template: |
|||
src: etcd.service.j2 |
|||
dest: /lib/systemd/system/etcd.service |
|||
backup: yes |
|||
when: init_system == "systemd" |
|||
notify: |
|||
- restart systemd-etcd |
|||
|
|||
- name: Write calico-node initd script |
|||
template: |
|||
src: deb-etcd.initd.j2 |
|||
dest: /etc/init.d/etcd |
|||
owner: root |
|||
mode: 755 |
|||
when: init_system == "sysvinit" and ansible_os_family == "Debian" |
|||
notify: restart etcd |
|||
|
|||
- name: Create etcd environment vars file |
|||
template: |
|||
src: etcd.j2 |
|||
dest: /etc/etcd.env |
|||
notify: restart etcd |
|||
|
|||
- name: Ensure etcd is running |
|||
service: name=etcd state=started enabled=yes |
@ -0,0 +1,14 @@ |
|||
--- |
|||
- name: Create etcd user |
|||
user: name=etcd shell=/bin/nologin home=/var/lib/etcd |
|||
|
|||
- name: Install etcd binaries |
|||
copy: |
|||
src={{ etcd_bin_dir }}/{{ item }} |
|||
dest={{ bin_dir }} |
|||
owner=etcd |
|||
mode=0755 |
|||
with_items: |
|||
- etcdctl |
|||
- etcd |
|||
notify: restart etcd |
@ -1,12 +1,3 @@ |
|||
--- |
|||
- name: Stop etcd2 service |
|||
service: name=etcd state=stopped |
|||
ignore_errors: yes |
|||
|
|||
- name: Create etcd pod manifest |
|||
template: src=etcd-pod.yml dest=/etc/kubernetes/manifests/etcd-pod.manifest |
|||
|
|||
- name: Check for etcd2 port (pulling image and running container) |
|||
wait_for: |
|||
port: 2379 |
|||
delay: 5 |
|||
- include: install.yml |
|||
- include: configure.yml |
@ -0,0 +1,113 @@ |
|||
#!/bin/sh |
|||
set -a |
|||
|
|||
### BEGIN INIT INFO |
|||
# Provides: etcd |
|||
# Required-Start: $local_fs $network $syslog |
|||
# Required-Stop: |
|||
# Default-Start: 2 3 4 5 |
|||
# Default-Stop: 0 1 6 |
|||
# Short-Description: etcd distributed k/v store |
|||
# Description: |
|||
# etcd is a distributed, consistent key-value store for shared configuration and service discovery |
|||
### END INIT INFO |
|||
|
|||
PATH=/sbin:/usr/sbin:/bin:/usr/bin |
|||
DESC="etcd k/v store" |
|||
NAME=etcd |
|||
DAEMON={{ bin_dir }}/etcd |
|||
{% if inventory_hostname in groups['etcd'] %} |
|||
DAEMON_ARGS="" |
|||
{% else %} |
|||
DAEMON_ARGS="-proxy on" |
|||
{% endif %} |
|||
SCRIPTNAME=/etc/init.d/$NAME |
|||
DAEMON_USER=etcd |
|||
STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}" |
|||
PID=/var/run/etcd.pid |
|||
|
|||
# Exit if the binary is not present |
|||
[ -x "$DAEMON" ] || exit 0 |
|||
|
|||
# Read configuration variable file if it is present |
|||
[ -f /etc/etcd.env ] && . /etc/etcd.env |
|||
|
|||
# Define LSB log_* functions. |
|||
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present |
|||
# and status_of_proc is working. |
|||
. /lib/lsb/init-functions |
|||
|
|||
do_status() |
|||
{ |
|||
status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $? |
|||
} |
|||
|
|||
# Function that starts the daemon/service |
|||
# |
|||
do_start() |
|||
{ |
|||
start-stop-daemon --background --start --quiet --make-pidfile --pidfile $PID --user $DAEMON_USER --exec $DAEMON \ |
|||
$DAEMON_OPTS \ |
|||
|| return 2 |
|||
} |
|||
|
|||
# |
|||
# Function that stops the daemon/service |
|||
# |
|||
do_stop() |
|||
{ |
|||
start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAME |
|||
RETVAL="$?" |
|||
|
|||
sleep 1 |
|||
return "$RETVAL" |
|||
} |
|||
|
|||
|
|||
case "$1" in |
|||
start) |
|||
log_daemon_msg "Starting $DESC" "$NAME" |
|||
do_start |
|||
case "$?" in |
|||
0|1) log_end_msg 0 || exit 0 ;; |
|||
2) log_end_msg 1 || exit 1 ;; |
|||
esac |
|||
;; |
|||
stop) |
|||
log_daemon_msg "Stopping $DESC" "$NAME" |
|||
if do_stop; then |
|||
log_end_msg 0 |
|||
else |
|||
log_failure_msg "Can't stop etcd" |
|||
log_end_msg 1 |
|||
fi |
|||
;; |
|||
status) |
|||
if do_status; then |
|||
log_end_msg 0 |
|||
else |
|||
log_failure_msg "etcd is not running" |
|||
log_end_msg 1 |
|||
fi |
|||
;; |
|||
|
|||
restart|force-reload) |
|||
log_daemon_msg "Restarting $DESC" "$NAME" |
|||
if do_stop; then |
|||
if do_start; then |
|||
log_end_msg 0 |
|||
exit 0 |
|||
else |
|||
rc="$?" |
|||
fi |
|||
else |
|||
rc="$?" |
|||
fi |
|||
log_failure_msg "Can't restart etcd" |
|||
log_end_msg ${rc} |
|||
;; |
|||
*) |
|||
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 |
|||
exit 3 |
|||
;; |
|||
esac |
@ -1,54 +0,0 @@ |
|||
--- |
|||
apiVersion: v1 |
|||
kind: Pod |
|||
metadata: |
|||
name: etcd |
|||
namespace: kube-system |
|||
spec: |
|||
hostNetwork: true |
|||
containers: |
|||
- name: etcd |
|||
image: quay.io/coreos/etcd:v2.2.2 |
|||
resources: |
|||
limits: |
|||
cpu: 100m |
|||
memory: 256M |
|||
args: |
|||
{% if inventory_hostname in groups['etcd'] %} |
|||
- --name |
|||
- etcd-{{inventory_hostname}}-master |
|||
- --advertise-client-urls |
|||
- "http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2379" |
|||
- --listen-peer-urls |
|||
- http://0.0.0.0:2380 |
|||
- --initial-advertise-peer-urls |
|||
- http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2380 |
|||
- --data-dir |
|||
- /var/etcd/data |
|||
- --initial-cluster-state |
|||
- new |
|||
{% else %} |
|||
- --proxy |
|||
- 'on' |
|||
{% endif %} |
|||
- --listen-client-urls |
|||
- "http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2379,http://127.0.0.1:2379" |
|||
- --initial-cluster |
|||
- "{% for host in groups['etcd'] %}etcd-{{host}}-master=http://{{ hostvars[host]['ip'] | default( hostvars[host]['ansible_default_ipv4']['address']) }}:2380{% if not loop.last %},{% endif %}{% endfor %}" |
|||
- --initial-cluster-token |
|||
- etcd-k8s-cluster |
|||
ports: |
|||
- name: etcd-client |
|||
containerPort: 2379 |
|||
hostPort: 2379 |
|||
- name: etcd-peer |
|||
containerPort: 2380 |
|||
hostPort: 2380 |
|||
volumeMounts: |
|||
- name: varetcd |
|||
mountPath: /var/etcd |
|||
readOnly: false |
|||
volumes: |
|||
- name: varetcd |
|||
hostPath: |
|||
path: /containers/pods/etcd-{{inventory_hostname}}/rootfs/var/etcd |
@ -0,0 +1,17 @@ |
|||
ETCD_DATA_DIR="/var/lib/etcd" |
|||
{% if inventory_hostname in groups['etcd'] %} |
|||
{% set etcd = {} %} |
|||
{% for host in groups['etcd'] %} |
|||
{% if inventory_hostname == host %} |
|||
{% set _dummy = etcd.update({'name':"etcd"+loop.index|string}) %} |
|||
{% endif %} |
|||
{% endfor %} |
|||
ETCD_ADVERTISE_CLIENT_URLS="http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2379" |
|||
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2380" |
|||
ETCD_INITIAL_CLUSTER_STATE="new" |
|||
ETCD_INITIAL_CLUSTER_TOKEN="k8s_etcd" |
|||
ETCD_LISTEN_PEER_URLS="http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2380" |
|||
ETCD_NAME="{{ etcd.name }}" |
|||
{% endif %} |
|||
ETCD_INITIAL_CLUSTER="{% for host in groups['etcd'] %}etcd{{ loop.index|string }}=http://{{ hostvars[host]['ip'] | default(hostvars[host]['ansible_default_ipv4']['address']) }}:2380{% if not loop.last %},{% endif %}{% endfor %}" |
|||
ETCD_LISTEN_CLIENT_URLS="http://{{ hostvars[inventory_hostname]['ip'] | default( ansible_default_ipv4.address) }}:2379,http://127.0.0.1:2379" |
@ -0,0 +1,18 @@ |
|||
[Unit] |
|||
Description=etcd |
|||
Conflicts=etcd.service |
|||
|
|||
[Service] |
|||
User=etcd |
|||
EnvironmentFile=/etc/etcd.env |
|||
{% if inventory_hostname in groups['etcd'] %} |
|||
ExecStart={{ bin_dir }}/etcd |
|||
{% else %} |
|||
ExecStart={{ bin_dir }}/etcd -proxy on |
|||
{% endif %} |
|||
Restart=always |
|||
RestartSec=10s |
|||
LimitNOFILE=40000 |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
Write
Preview
Loading…
Cancel
Save