翼度科技»论坛 云主机 LINUX 查看内容

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

8

主题

8

帖子

24

积分

新手上路

Rank: 1

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

前情概要

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

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

感觉Ansible比使用脚本来得更方便,所以使用Ansible。
playbook的yaml文件:
  1. ---
  2. - name: Initialize servers
  3.   hosts: all_servers
  4.   gather_facts: no
  5.   become: no
  6.   tasks:
  7.     - name: Disable firewall
  8.       service:
  9.         name: firewalld
  10.         state: stopped
  11.         enabled: no
  12.     - name: Disable SELinux
  13.       selinux:
  14.         state: disabled
  15.         policy: targeted
  16.     - name: Disable SELinux immediately
  17.       command: setenforce 0
  18.       ignore_errors: yes
  19.     - name: Ensure user is absent and home directory removed
  20.       user:
  21.         name: user
  22.         state: absent
  23.         remove: yes
  24.     - name: Remove default yum repos
  25.       file:
  26.         path: "{{ item }}"
  27.         state: absent
  28.       with_fileglob:
  29.         - /etc/yum.repos.d/*.repo
  30.     - name: Copy http.repo to all servers
  31.       copy:
  32.         src: /root/http.repo
  33.         dest: /etc/yum.repos.d/http.repo
  34.         owner: root
  35.         group: root
  36.         mode: '0644'
  37.     - name: Add hostname into /etc/hosts
  38.       lineinfile:
  39.         path: /etc/hosts
  40.         line: "{{ hostvars[item]['ansible_host'] }} {{ item }}"
  41.         state: present
  42.         create: yes
  43.         regexp: "^{{ hostvars[item]['ansible_host'] }}\\s+{{ item }}$"
  44.       with_items: "{{ groups['all_servers'] }}"
  45.     - name: Check /root/.ssh exists
  46.       file:
  47.         path: /root/.ssh
  48.         state: directory
  49.         mode: '0700'
  50.     - name: Check id_rsa exists
  51.       stat:
  52.         path: /root/.ssh/id_rsa
  53.       register: ssh_key
  54.     - name: Generate SSH keypair if not already present
  55.       openssh_keypair:
  56.         path: /root/.ssh/id_rsa
  57.         type: rsa
  58.         size: 2048
  59.         state: present
  60.         mode: '0600'
  61.       when: not ssh_key.stat.exists
  62.     - name: Gather SSH public keys from all servers
  63.       slurp:
  64.         src: /root/.ssh/id_rsa.pub
  65.       register: public_key
  66.     - name: Set up authorized_keys for all servers
  67.       authorized_key:
  68.         user: root
  69.         key: "{{ hostvars[item]['public_key']['content'] | b64decode }}"
  70.         state: present
  71.       with_items: "{{ groups['all_servers'] }}"
复制代码
inventory文件
  1. [all_servers]
  2. hpc_mgr_1 ansible_user=root ansible_host=10.2.1.9 ansible_connection=local
  3. hpc_mgr_2 ansible_user=root ansible_host=10.2.1.11
  4. hpc_node_1 ansible_user=root ansible_host=10.2.1.13
  5. hpc_node_2 ansible_user=root ansible_host=10.2.1.15
  6. hpc_node_3 ansible_user=root ansible_host=10.2.1.17
  7. hpc_node_4 ansible_user=root ansible_host=10.2.1.19
  8. hpc_node_5 ansible_user=root ansible_host=10.2.1.21
  9. hpc_node_6 ansible_user=root ansible_host=10.2.1.23
  10. hpc_node_7 ansible_user=root ansible_host=10.2.1.25
  11. hpc_node_8 ansible_user=root ansible_host=10.2.1.27
  12. hpc_node_9 ansible_user=root ansible_host=10.2.1.29
  13. hpc_node_10 ansible_user=root ansible_host=10.2.1.31
  14. hpc_node_11 ansible_user=root ansible_host=10.2.1.33
  15. hpc_node_12 ansible_user=root ansible_host=10.2.1.35
  16. hpc_node_13 ansible_user=root ansible_host=10.2.1.37
  17. hpc_node_14 ansible_user=root ansible_host=10.2.1.39
  18. hpc_node_15 ansible_user=root ansible_host=10.2.1.41
  19. hpc_node_16 ansible_user=root ansible_host=10.2.1.43
  20. hpc_node_17 ansible_user=root ansible_host=10.2.1.45
  21. hpc_node_18 ansible_user=root ansible_host=10.2.1.47
  22. hpc_node_19 ansible_user=root ansible_host=10.2.1.49
  23. hpc_node_20 ansible_user=root ansible_host=10.2.1.51
  24. hpc_node_21 ansible_user=root ansible_host=10.2.1.53
  25. hpc_node_22 ansible_user=root ansible_host=10.2.1.55
  26. hpc_node_23 ansible_user=root ansible_host=10.2.1.57
  27. hpc_node_24 ansible_user=root ansible_host=10.2.1.59
  28. hpc_node_25 ansible_user=root ansible_host=10.2.1.61
  29. hpc_node_26 ansible_user=root ansible_host=10.2.1.63
  30. hpc_node_27 ansible_user=root ansible_host=10.2.1.65
  31. hpc_node_28 ansible_user=root ansible_host=10.2.1.67
  32. hpc_node_29 ansible_user=root ansible_host=10.2.1.69
  33. hpc_node_30 ansible_user=root ansible_host=10.2.1.71
  34. hpc_node_31 ansible_user=root ansible_host=10.2.1.73
  35. hpc_node_32 ansible_user=root ansible_host=10.2.1.75
  36. hpc_fnode_1 ansible_user=root ansible_host=10.2.1.77
  37. hpc_fnode_2 ansible_user=root ansible_host=10.2.1.79
复制代码
执行playbook:
  1. 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】 我们会及时删除侵权内容,谢谢合作!
来自手机

举报 回复 使用道具