У меня есть скрипт, который читает текстовый файл, в котором перечислены все узлы:
node1
node2
node3
.
.
.
Это мой сценарий:
#!/bin/bash
while read f; do
ssh-copy-id myusername@"$f"
ssh [email protected]
icinga2 pki ticket --cn '$f'
done < linux-list.txt
while read f; do
ssh myusername@"$f" '
yum install -y epel-release
wget --no-check-certificate https://packages.icinga.org/epel/7/release/noarch/icinga-rpm-release-7-1.el7.centos.noarch.rpm
yum install icinga-rpm-release-7-1.el7.centos.noarch.rpm
yum install -y icinga2 nagios-plugins-all
chown -R icinga:icinga /etc/icinga2 /var/lib/icinga2 /var/log/icinga2' </dev/null
ssh [email protected] icinga2 pki ticket --cn "$f" |
ssh myusername@"$f" 'cat >/tmp/pkicode'
scp ./zones.conf myusername@"$f":/etc/icinga2/zones.conf
done < linux-list.txt
1) Сценарий должен войти в мастер Icinga и выполнить команду icinga2 pki ticket --cn '$f'
для каждого узла, найденного в этом файле linux-list.txt
, и сгенерировать билет для каждого хоста.
2) Затем отправляет этот сгенерированный код каждому узлу ($f)
После выполнения всех вышеперечисленных команд сценарий должен запустить мастер узла команды icinga2, который запустит подсказку вопроса/ответа и потребует, чтобы кто-то ввел ответ, как показано ниже.
Полное доменное имя мастера Icinga — master.icinga.test.com
, а его IP — 10.20.20.1
. Билет PKI — это то, что мы сгенерировали ранее на мастере Icinga, и оно отличается для каждого хоста.
Есть ли способ автоматизировать это?
Y
Enter
master.icinga.test.com
Y
10.20.20.1
N
Y
[PKI Ticket created earlier on the Icinga master]
Enter
Enter
Y
Y
Enter
Enter
N
N
Спасибо
node setup
вместоnode wizard
в сценариях. - person tripleee   schedule 27.07.2018'$f'
в одинарных кавычках просто создает литеральную строку$f
. Чтобы интерполировать значение переменнойf
, используйте двойные кавычки. Но эта команда все равно не должна быть в первом цикле; у вас это смутно правильно во втором цикле уже. - person tripleee   schedule 27.07.2018ssh-copy-id
в начало второго цикла и избавьтесь от первого. Причина, по которой я предложил делать их отдельно, заключается в том, чтобы иметь возможность запускать части, которые не требуют взаимодействия с пользователем, без присмотра, параллельно, из другого скрипта и т. д. - person tripleee   schedule 27.07.2018icinga2 node setup --ticket ead2d570e18c78abf285d6b85524970a0f69c22d --cn icinga2-client1.localdomain --endpoint icinga2-master1.localdomain --zone icinga2-client1.localdomain --parent_zone master --parent_host icinga2-master1.localdomain --trustedcert /var/lib/icinga2/certs/trusted-parent.crt --accept-commands --accept-config --disable-confd
- person tripleee   schedule 27.07.2018