diff --git a/ssh/README.md b/ssh/README.md new file mode 100644 index 0000000..e69de29 diff --git a/ssh/roles/ssh_setup/README.md b/ssh/roles/ssh_setup/README.md new file mode 100644 index 0000000..30b0ddf --- /dev/null +++ b/ssh/roles/ssh_setup/README.md @@ -0,0 +1,37 @@ +# Роль Ansible: Настройка SSH + +## Описание + +Данная роль предназначена для настройки сервера SSH на удалённых хостах с помощью Ansible. Она выполняет следующие задачи: + +1. Гарантирует, что каталог `/etc/ssh` существует и имеет правильные права доступа. +2. Настраивает параметры SSH-сервера в файле `sshd_config`. +3. Включает и запускает службу `sshd`. +4. При изменении конфигурации SSH перезапускает службу `sshd`. + +## Требования + +Роль не требует дополнительных зависимостей, кроме установленного Ansible и наличия прав суперпользователя на целевых хостах. + +## Переменные роли + +Роль не использует внешние переменные и работает с фиксированными параметрами SSH. + +## Зависимости + +Зависимости от других ролей отсутствуют. + +## Пример Playbook + +Пример использования роли в Playbook: + +```yaml +- hosts: servers + become: yes + roles: + - ssh_config_role +``` + +## Автор + +Автор: [Юрий Обрезков] \ No newline at end of file diff --git a/ssh/roles/ssh_setup/handlers/main.yml b/ssh/roles/ssh_setup/handlers/main.yml new file mode 100644 index 0000000..074dad3 --- /dev/null +++ b/ssh/roles/ssh_setup/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Restart SSH + service: + name: sshd + state: restarted \ No newline at end of file diff --git a/ssh/roles/ssh_setup/meta/main.yml b/ssh/roles/ssh_setup/meta/main.yml new file mode 100644 index 0000000..ea68190 --- /dev/null +++ b/ssh/roles/ssh_setup/meta/main.yml @@ -0,0 +1,34 @@ +galaxy_info: + author: your name + description: your role description + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.1 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. diff --git a/ssh/roles/ssh_setup/tasks/main.yml b/ssh/roles/ssh_setup/tasks/main.yml new file mode 100644 index 0000000..5f5e33b --- /dev/null +++ b/ssh/roles/ssh_setup/tasks/main.yml @@ -0,0 +1,26 @@ +- name: Ensure SSH directory exists + file: + path: /etc/ssh + state: directory + mode: '0755' + +- name: Configure SSH server + lineinfile: + path: /etc/ssh/sshd_config + regexp: "^{{ item.key }}" + line: "{{ item.key }} {{ item.value }}" + create: yes + state: present + loop: + - { key: "Port", value: "22" } + - { key: "PubkeyAuthentication", value: "yes" } + - { key: "X11Forwarding", value: "yes" } + - { key: "PrintMotd", value: "no" } + - { key: "UsePAM", value: "yes" } + notify: Restart SSH + +- name: Ensure SSH service is enabled and running + service: + name: sshd + state: started + enabled: yes \ No newline at end of file diff --git a/ssh/roles/ssh_setup/tests/inventory b/ssh/roles/ssh_setup/tests/inventory new file mode 100644 index 0000000..878877b --- /dev/null +++ b/ssh/roles/ssh_setup/tests/inventory @@ -0,0 +1,2 @@ +localhost + diff --git a/ssh/roles/ssh_setup/tests/test.yml b/ssh/roles/ssh_setup/tests/test.yml new file mode 100644 index 0000000..393d02e --- /dev/null +++ b/ssh/roles/ssh_setup/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - ssh_setup diff --git a/ssh/roles/ssh_setup/vars/main.yml b/ssh/roles/ssh_setup/vars/main.yml new file mode 100644 index 0000000..91d7182 --- /dev/null +++ b/ssh/roles/ssh_setup/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for ssh diff --git a/ssh/ssh_setup_config.yml b/ssh/ssh_setup_config.yml new file mode 100644 index 0000000..0ec2459 --- /dev/null +++ b/ssh/ssh_setup_config.yml @@ -0,0 +1,6 @@ +- name: Update ssh config + become: yes + hosts: all + roles: + - role: ssh_setup + tags: ssh_setup