Как написать скрипт на языке bash для использования в Ansible, который будет автоматически распространять публичные ключи на целевые машины?

Как можно улучшить скрипт на Bash для добавления ключей доступа к серверам?
  • 17 августа 2024 г. 15:53
Ответы на вопрос 2
Вот пример базового скрипта на Bash для использования в Ansible для распространения публичных ключей на целевые машины:

```bash
#!/bin/bash

# Путь к публичному ключу
PUBLIC_KEY_PATH="/путь/к/вашему/публичному/ключу/id_rsa.pub"

# Целевые хосты
TARGET_HOSTS=("хост1" "хост2" "хост3")

for host in "${TARGET_HOSTS[@]}"
do
    ssh-copy-id -i $PUBLIC_KEY_PATH user@$host
done
```

Для улучшения этого скрипта можно добавить проверку наличия файла с публичным ключом и обработку ошибок. Например, можно добавить следующий код:

```bash
#!/bin/bash

# Путь к публичному ключу
PUBLIC_KEY_PATH="/путь/к/вашему/публичному/ключу/id_rsa.pub"

# Проверяем наличие файла с публичным ключом
if [ ! -f "$PUBLIC_KEY_PATH" ]; then
    echo "Error: Public key file not found"
    exit 1
fi

# Целевые хосты
TARGET_HOSTS=("хост1" "хост2" "хост3")

for host in "${TARGET_HOSTS[@]}"
do
    ssh-copy-id -i $PUBLIC_KEY_PATH user@$host
    if [ $? -ne 0 ]; then
        echo "Error: Failed to copy public key to $host"
    fi
done
```

Этот улучшенный скрипт проверит наличие файла с публичным ключом перед началом выполнения, а также будет выводить сообщение об ошибке, если копирование ключа на целевую машину не удалось.
Не вижу тут никакого простора для баша. Копировать файл можно с помощью builtin-модуля copy , вам останется только перечислить хосты в inventory.
Похожие вопросы