opsta.host_preparation
主机准备
这是一个用于准备 Ubuntu 主机的 Ansible 角色。
- 配置主机名(可选)
- 配置 apt-cacher-ng(可选)
- 更新所有软件包,包括内核到最新版本
- 安装一些工具(查看 角色变量)
- 系统调优(查看 角色变量)
- 配置 NTP
- 配置用户可无需密码使用 sudo
- 配置 authorized_keys
可以在这里查看如何制作 playbook、配置和示例命令 https://github.com/winggundamth/ansible-wing-playbook
要求
在使用此角色之前,请准备好您的公钥以用于 authorized_keys,并配置 host_preparation_authorized_keys_path
指向您的 authorized_keys 文件。
角色变量
# 这是默认变量
host_preparation_reboot_timeout: 600
host_preparation_ntp_server: ntp.ubuntu.com
host_preparation_sshd_config: /etc/ssh/sshd_config
host_preparation_sshd_port: 22
host_preparation_group_authorized_keys_path: "{{ playbook_dir }}/files/groups/{{ group_names[-1] }}/authorized_keys"
host_preparation_global_authorized_keys_path: "{{ playbook_dir }}/files/authorized_keys"
host_preparation_base_packages:
- htop
- iotop
- sysstat
- iftop
host_preparation_is_config_hostname: false
host_preparation_is_tuning: false
host_preparation_sysctl_vars:
- { regexp: '^fs\.file-max \= ', line: 'fs.file-max = 1000000' }
- { regexp: '^net\.ipv4\.tcp_max_syn_backlog \= ', line: 'net.ipv4.tcp_max_syn_backlog = 65535' }
- { regexp: '^net\.ipv4\.tcp_tw_reuse \= ', line: 'net.ipv4.tcp_tw_reuse = 1' }
- { regexp: '^net\.ipv4\.tcp_tw_recycle \= ', line: 'net.ipv4.tcp_tw_recycle = 1' }
- { regexp: '^net\.ipv4\.ip_local_port_range \= ', line: 'net.ipv4.ip_local_port_range = 1024 65000' }
- { regexp: '^net\.ipv4\.tcp_max_tw_buckets \= ', line: 'net.ipv4.tcp_max_tw_buckets = 400000' }
- { regexp: '^net\.ipv4\.tcp_no_metrics_save \= ', line: 'net.ipv4.tcp_no_metrics_save = 1' }
- { regexp: '^net\.ipv4\.tcp_rmem \= ', line: 'net.ipv4.tcp_rmem = 4096 87380 16777216' }
- { regexp: '^net\.ipv4\.tcp_syn_retries \= ', line: 'net.ipv4.tcp_syn_retries = 2' }
- { regexp: '^net\.ipv4\.tcp_synack_retries \= ', line: 'net.ipv4.tcp_synack_retries = 2' }
- { regexp: '^net\.ipv4\.tcp_wmem \= ', line: 'net.ipv4.tcp_wmem = 4096 65536 16777216' }
- { regexp: '^net\.core\.somaxconn \= ', line: 'net.core.somaxconn = 65535' }
- { regexp: '^net\.core\.netdev_max_backlog \= ', line: 'net.core.netdev_max_backlog = 4096' }
- { regexp: '^net\.core\.rmem_max \= ', line: 'net.core.rmem_max = 16777216' }
- { regexp: '^net\.core\.wmem_max \= ', line: 'net.core.wmem_max = 16777216' }
- { regexp: '^net\.nf_conntrack_max \= ', line: 'net.nf_conntrack_max = 1048576' }
- { regexp: '^vm\.min_free_kbytes \= ', line: 'vm.min_free_kbytes = 65536' }
- { regexp: '^vm\.overcommit_memory \= ', line: 'vm.overcommit_memory = 1' }
- { regexp: '^vm\.swappiness \= ', line: 'vm.swappiness = 0' }
host_preparation_rc_vars:
- { regexp: '^echo never > /sys/kernel/mm/transparent_hugepage/enabled', line: 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' }
- { regexp: '^echo never > /sys/kernel/mm/transparent_hugepage/defrag', line: 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' }
- { regexp: '^ip link set eth0 txqueuelen ', line: 'ip link set eth0 txqueuelen 5000' }
host_preparation_limits_vars:
- { regexp: '^\* soft nofile ', line: '* soft nofile 1000000' }
- { regexp: '^\* hard nofile ', line: '* hard nofile 1000000' }
- { regexp: '^\* soft nproc ', line: '* soft nproc 393216' }
- { regexp: '^\* hard nproc ', line: '* hard nproc 393216' }
# 这是可选变量
host_preparation_apt_cacher_ng: http://apt-cacher-ng.example.com:3142
依赖关系
无
示例 Playbook
由于 Ubuntu Xenial 默认不带 Python 2。因此,playbook 需要先安装 Python 2,而不收集事实。
- hosts: all
gather_facts: no
become: true
pre_tasks:
- name: 首先安装 Python 2
raw: python --version || apt update && apt install -y python
roles:
- winggundamth.host_preparation
vars_files:
- "{{ host_preparation_vars_file }}"
有用标签列表
有一些有用的标签可以用于维护您的 Ubuntu 主机。
- host-preparation-apt-cacher-ng
- host-preparation-configure-hostname
- host-preparation-configure-ntp
- host-preparation-install-base-packages
- host-preparation-update-packages
- host-preparation-tuning
- host-preparation-configure-authorized_keys
- host-preparation-configure-user
- host-preparation-reboot(需要将
host_preparation_need_reboot
变量配置为 true)
您可以使用 --tag
指定标签,例如,如果您只想配置 authorized_keys,并且仅限于生产和数据库服务器组。您可以使用以下命令运行
ansible-playbook -i inventories/host_preparation --limit production:database \
--tag host-preparation-configure-authorized_keys host-preparation.yml
许可协议
MIT
作者信息
您可以在 https://github.com/winggundamth 查看我的作品。