一、须要利用7.5版本虚拟机
二、7.5版注意事项:python
【2.1】、网卡名叫ens32一样配置文件也是ens32 【2.2】、命令:systemctl 统一管理命令, 例,systemctl stop iptables.service 关闭防火墙 【2.3】、设置开机自启动防火墙:systemctl enable firewalld 【2.4】、设置开机关闭防火墙(必须关闭) :systemctl disable firewalld 【2.5】、必 须 关 闭 :systemctl disable NetworkManager 【2.6】、yum得配置文件所有能够用 【2.7】、重启虚拟机,ifup ens32 启动网卡来获取ip
生产环境Ansible管理服务器ssh登录安全策略
一、ansible (很是简单,不少企业都在用) 适用于管理500台如下的服务器,特色是一台虚拟机管理多台虚拟机,不须要安装任何客户端。利用得是ssh通道,操控要用免密钥。nginx
1.一、安装ansible软件同时会自动安装sshpass yum -y install epel-release yum -y install ansible 1.二、修改ssh登陆 1.2.一、vim /etc/ssh/ssh_config 修改第35行 StrictHostKeyChecking ask改成no 1.2.二、vim /etc/ssh/sshd_config 第17行 #Port 22 #修改ssh链接端口 (工做中改为一万以上) 第38行 #PermitRootLogin yes #是否容许root帐号远程登录 (工做中必须关闭) 第43行 #PubkeyAuthentication yes #是否开启公钥链接认证 (工做中开启) 第47行 AuthorizedKeysFile .ssh/authorized_keys #公钥文件的放置位置 第65行 PasswordAuthentication yes #是否开启密码验证登录 第79行 GSSAPIAuthentication yes #是否关闭GSSAPI认证 (工做中关闭)提升ssh解析速度 第115行 #UseDNS yes #是否关闭DNS反向解析 (关闭) 加快ssh得链接速度 1.2.三、ansible配置文件 /etc/ansible/hosts /etc/ansible/hosts vim /etc/ansible/hosts [nginx] WebA ansible_ssh_host=IP地址 WebB ansible_ssh-host=IP地址
[root@ansible ~]# cat /etc/ansible/hosts [nginx] Web01 ansible_ssh_host=192.168.200.184 Web02 ansible_ssh_host=192.168.200.185
说明: ansible_ssh_host:
被管理主机IP ansible_ssh_user:
被管理主机用户名 ansible_ssh_pass:
被管理主机用户的登录密码 ansible_sudo_pass:
被管理主机用户sudo时的密码web
为了不Ansible下发指令时须要输入被管理主机的密码,能够经过证书签名达到SSH无密码登录。使用ssh-keygen产生一对密钥,并经过ssh-copy-id命令来发送生成的公钥。shell
[root@ansible ~]# ls ~/.ssh/ authorized_keys id_rsa id_rsa.pub [root@ansible ~]# ssh-copy-id 192.168.200.184 [root@ansible ~]# ssh-copy-id 192.168.200.185
[root@ansible ~]# /usr/local/python/bin/ansible-doc -l
查看总帮助 [root@ansible ~]# /usr/local/python/bin/ansible-doc -s shell
查看shell模块的帮助apache
一、ping模块:Ansible中使用ping模块来检测指定主机的连通性vim
【1】、Ansible中使用ping模块来检测指定主机的连通性 ansible Web01 -m ping 绿色表示连通的,红色表示不通 只要作了免密钥就能够直接登陆用户。ansible 被管理范围 -m 模块名 -a 具体命令 【2】、saltstack (复杂)适用于管理1000-40000台服务器 【3】、puppet(超级复杂)
二、command模块:在远程主机执行命令,不支持管道符和重定向等复杂命令,可彻底被shell模块替代安全
例:ansible Web01 -m command -a 'hostname -I' 查看Web01服务器的ip地址
三、shell模块:Ansible中的shell模块能够在被管理主机上运行命令,并支持像管道符重定向这样的复杂命令。bash
例1:ansible Web01 -m shell -a 'useradd yunjisuan' 在Web01上建立用户yunjisuan 例2:ansible Web01 -m shell -a 'echo 123123 | passwd --stdin yunjisuan' 给Web01上yunjisuan用户非交互方式设定密码
四、cron模块:Ansible中的cron模块用于定义任务计划。主要包括两种状态(state);服务器
【4.1】crontab时间周期: 若是不指定周期,默认是*号 minute:分钟 hour:小时 day:日期 month:月份 weekday:周期 【4.2】crontab任务: job:指明运行的命令是什么 【4.3】crontab任务描述: 必须写 name:定时任务描述(定时任务清除的依据) 【4.4】state状态: 添加或删除定时任务,不写默认是添加 present:表示添加(省略状态时默认使用); absent:表示移除; 【4.5】crontab任务的用户身份: user:指定定时任务以哪一个用户身份执行,若是不指定默认是root用户 例一、添加定时任务计划,在全部被管理的主机里每十分钟输出hello字符串,定时任务描述为test cron job ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"' 例二、删除描述为test cron job的定时任务 ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=absent' 例三、给Web01服务器上的普通用户yunjisuan添加一个定时任务 ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" user="yunjisuan"'
五、copy模块:Ansible中的copy模块用于实现文件复制和批量下发文件。其中使用src来定义本地源文件路径;使用dest定义被管理主机文件路径;backup=yes表示备份如下对方的文件。使用content则是使用指定信息内容来生成目标文件。ssh
例一、把WebB服务器上的/tmp/test目录复制到/root/下 ansible WebB -m copy -a ‘src=/tmp/test dest=/root’ 例二、把WebB服务器上的/tmp/test目录备份一下在复制到/root/下 ansible WebB -m copy -a ‘src=/tmp/test dest=/root backup=yes’
六、script模块:Ansible中的script模块能够将本地脚本复制到被管理主机的内存中并运行,不会在被管理主机中留下脚本文件。
例一、编写一个脚本,而后经过ansible的script模块远程向被管理主机执行此脚本 echo 'echo "1111" >> /tmp/test' >> /tmp/test.sh ansible WebA -m script -a '/tmp/test.sh'
七、 yum模块:利用yum模块安装软件包,虽然能被shell模块替代
可是用yum模块更显专业一些
【7.1】软件包名: name:指定软件包的名字 state状态: present:安装软件包(默认就是这个) absent:卸载软件包 例一、安装nmap软件包 ansible all -m yum -a 'name=nmap' 例二、卸载nmap软件包 ansible all -m yum -a 'name=nmap state=absent'
八、service模块:利用service模块管理服务程序,虽然能被shell模块替代
可是用service模块更显专业一些
【8.1】服务名称: name:指定服务的名字 【8.2】state状态: started:启动服务 stopped:中止服务 restarted:重启服务 reloaded:平滑重载 【8.3】enabled开机自启动: true:设置开机自启动 false:设置开启不启动 例一、启动firewalld并设置开机自启动 ansible Web01 -m service -a 'name=firewalld state=started enabled=true' 例二、关闭firewalld并设置开机不启动 ansible Web01 -m service -a 'name=firewalld state=stopped enabled=false'
九、user模块:用户管理模块。管理用户帐号,批量建立用户
【9.1】指定用户名 name:指定操做的用户的名字 【9.2】用户描述 comment:指定用户的描述信息 【9.3】createhome:是否建立家目录 【9.4】uid:指定用户的uid号 【9.5】groups:指定用户的附加组(默认建立和用户名相同的组) 【9.6】password:指定用户的密码 【9.7】update_password:更新用户的密码 【9.8】shell指定用户的登录方式 /bin/bash:能登陆系统 /sbin/nologin:不能登陆系统 【9.9】home:指定用户的家目录路径 【9.10】state状态: present:建立用户(默认就是这个) absent:删除用户 【9.11】remove:当指定state=absent时,确认是否删除用户家目录 true false 例一、在Web02上建立一个普通用户yunjisuan,并设置用户的密码为123123 ansible Web02 -m user -a 'name=yunjisuan comment="welcom to yunjisuan" uid=1066 password=123123 shell=/bin/bash home=/home/yunjisuan' 注:利用ansible的user模块状态用户时要注意在password参数的后边添加密文,不然不能登录用户 经过Python的pip程序安装passlib便可为密码加密 例二、安装Python2的pip工具,并经过pip工具安装Python的加密模块来给密码加密 yum -y install epel-release yum -y install python2-pip pip install passlib (python装一个支持程序passlib) 生成密文密码 python -c "from passlib.hash import sha512_crypt;import getpass;print sha512_crypt.encrypt(getpass.getpass())" Password: #输入你想要加密的密码 $6$rounds=656000$Tw15COd8DLh/VS94$Mcmz/8CcjBKiEl0mYHcOQQCxEA5mz66EcGH2qXVk6o.Sm7FsRS.DsDVy6ET8iI6jDa045I94slZqWFwyYnRSW1 #加密后的密码 把加密的暗文复制到刚才password=暗文 例二、删除以前建立的yunjisuan用户,并删除它的家目录 ansible Web02 -m user -a 'name=yunjisuan state=absent remove=true'
十、setup模块:Ansible中使用setup模块收集,查看被管理主机的facts(facts是Ansible采集被管理主机设备信息的一个功能)。每一个被管理主机在接收并运行管理命令以前,都会将本身的相关信息(操做系统版本,IP地址等)发送给控制主机
例一、查看全部远程主机的facts信息 ansible all -m setup | head (all表示全部)