年轻人你不讲武德 发表于 2024-10-14 18:17:39

使用Ansible为集群初始化并配置免密

使用Ansible为集群初始化并配置免密

前情概要

集群的36台服务器安装好了centos7.9设置了统一的root密码,并配置好了主机名和ip。现在需要实现:

[*]每台关闭防火墙和selinux
[*]删除安装操作系统时创建的默认用户user及其家目录
[*]将集群的36台主机和ip信息添加到/etc/hosts文件
[*]删除默认yum源配置文件,添加指定的repo文件
[*]为集群36台主机配置ssh相互免密
Ansible实现

感觉Ansible比使用脚本来得更方便,所以使用Ansible。
playbook的yaml文件:
---
- name: Initialize servers
hosts: all_servers
gather_facts: no
become: no

tasks:
    - name: Disable firewall
      service:
      name: firewalld
      state: stopped
      enabled: no

    - name: Disable SELinux
      selinux:
      state: disabled
      policy: targeted
    - name: Disable SELinux immediately
      command: setenforce 0
      ignore_errors: yes

    - name: Ensure user is absent and home directory removed
      user:
      name: user
      state: absent
      remove: yes

    - name: Remove default yum repos
      file:
      path: "{{ item }}"
      state: absent
      with_fileglob:
      - /etc/yum.repos.d/*.repo
    - name: Copy http.repo to all servers
      copy:
      src: /root/http.repo
      dest: /etc/yum.repos.d/http.repo
      owner: root
      group: root
      mode: '0644'

    - name: Add hostname into /etc/hosts
      lineinfile:
      path: /etc/hosts
      line: "{{ hostvars['ansible_host'] }} {{ item }}"
      state: present
      create: yes
      regexp: "^{{ hostvars['ansible_host'] }}\\s+{{ item }}$"
      with_items: "{{ groups['all_servers'] }}"

    - name: Check /root/.ssh exists
      file:
      path: /root/.ssh
      state: directory
      mode: '0700'
    - name: Check id_rsa exists
      stat:
      path: /root/.ssh/id_rsa
      register: ssh_key
    - name: Generate SSH keypair if not already present
      openssh_keypair:
      path: /root/.ssh/id_rsa
      type: rsa
      size: 2048
      state: present
      mode: '0600'
      when: not ssh_key.stat.exists

    - name: Gather SSH public keys from all servers
      slurp:
      src: /root/.ssh/id_rsa.pub
      register: public_key

    - name: Set up authorized_keys for all servers
      authorized_key:
      user: root
      key: "{{ hostvars['public_key']['content'] | b64decode }}"
      state: present
      with_items: "{{ groups['all_servers'] }}"inventory文件

hpc_mgr_1 ansible_user=root ansible_host=10.2.1.9 ansible_connection=local
hpc_mgr_2 ansible_user=root ansible_host=10.2.1.11
hpc_node_1 ansible_user=root ansible_host=10.2.1.13
hpc_node_2 ansible_user=root ansible_host=10.2.1.15
hpc_node_3 ansible_user=root ansible_host=10.2.1.17
hpc_node_4 ansible_user=root ansible_host=10.2.1.19
hpc_node_5 ansible_user=root ansible_host=10.2.1.21
hpc_node_6 ansible_user=root ansible_host=10.2.1.23
hpc_node_7 ansible_user=root ansible_host=10.2.1.25
hpc_node_8 ansible_user=root ansible_host=10.2.1.27
hpc_node_9 ansible_user=root ansible_host=10.2.1.29
hpc_node_10 ansible_user=root ansible_host=10.2.1.31
hpc_node_11 ansible_user=root ansible_host=10.2.1.33
hpc_node_12 ansible_user=root ansible_host=10.2.1.35
hpc_node_13 ansible_user=root ansible_host=10.2.1.37
hpc_node_14 ansible_user=root ansible_host=10.2.1.39
hpc_node_15 ansible_user=root ansible_host=10.2.1.41
hpc_node_16 ansible_user=root ansible_host=10.2.1.43
hpc_node_17 ansible_user=root ansible_host=10.2.1.45
hpc_node_18 ansible_user=root ansible_host=10.2.1.47
hpc_node_19 ansible_user=root ansible_host=10.2.1.49
hpc_node_20 ansible_user=root ansible_host=10.2.1.51
hpc_node_21 ansible_user=root ansible_host=10.2.1.53
hpc_node_22 ansible_user=root ansible_host=10.2.1.55
hpc_node_23 ansible_user=root ansible_host=10.2.1.57
hpc_node_24 ansible_user=root ansible_host=10.2.1.59
hpc_node_25 ansible_user=root ansible_host=10.2.1.61
hpc_node_26 ansible_user=root ansible_host=10.2.1.63
hpc_node_27 ansible_user=root ansible_host=10.2.1.65
hpc_node_28 ansible_user=root ansible_host=10.2.1.67
hpc_node_29 ansible_user=root ansible_host=10.2.1.69
hpc_node_30 ansible_user=root ansible_host=10.2.1.71
hpc_node_31 ansible_user=root ansible_host=10.2.1.73
hpc_node_32 ansible_user=root ansible_host=10.2.1.75
hpc_fnode_1 ansible_user=root ansible_host=10.2.1.77
hpc_fnode_2 ansible_user=root ansible_host=10.2.1.79执行playbook:
ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory.ini a.yaml --ask-pass总结

临时使用,体验很不错。

来源:https://www.cnblogs.com/holdmyhand/p/18463979
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 使用Ansible为集群初始化并配置免密