前置条件:
(1)秘钥远程登录服务器实现免密登录
(2)管理服务器安装ansible
(3)Ansible主机上定义hosts文件和准备安装包
前置(1)部署
需要提前部署好秘钥远程登录服务器实现免密登录
想要打通的过去的这台主机:
1)ssh-keygen -t dsa建立私钥和公钥(一直回车)
2)创建ssh目录:mkdir /ssh 在cd .ssh
3)ssh-copy-id -i /root/.ssh/id_dsa.pub root@192.168.174.138
4)检查一下是否打通ssh 192.168.174.138
需要被打通的主机:
1)需要在第3把打通过去之前新建文件:mkdir .ssh
2)新建文件:touch authorized_keys
3)附加权限:chmod 600 authorized_keys
4)建立私钥公钥:ssh-keygen -t dsa
前置(2)部署
管理端服务器 ---使用ansible之前先打通秘钥
第一个历程:安装部署软件
yum install -y epel-release ---安装epel源
yum install -y ansible ---需要依赖epel的yum源
第二个历程:不需要编写配置文件的,但是需要编写主机清单文件
/etc/ansible/ansible.cfg ---ansible服务配置文件(一般都是不需要配置的)
/etc/ansible/hosts ---主机清单文件(主要配置文件)
/etc/ansible/roles ---角色目录
进入到vim /etc/ansible/hosts里面编写如下信息:
#定义可以管理的主机信息
192.168.174.138
第三个历程:测试是否可以管理多个主机
利用ansible测试需要管理的主机:ansible 192.168.174.139 也可以使用ansible all-a "hostname" (其中-a的意思就是active执行什么命令动作)
前置(3)部署
在Ansible主机上定义hosts文件和准备安装包,目录结构如下:
hosts里面创建一台被管理的客户机:(这里就按照一台ip地址为:192.168.174.138为例)
#定义可以管理的主机信息
192.168.174.138 ansible_ssh_user=root ansible_ssh_pass=123456
首先我们配置我们剧本install.yml:
- hosts: 192.168.174.138
tasks:
- name: 安装依赖包
yum: name=zlib,zlib-devel,openssl,openssl-devel,pcre,pcre-devel,gcc state=present
- name: 传输并解安装包
unarchive: src=nginx-1.12.0.tar.gz dest=/usr/local/ copy=yes
- name: 编译安装
shell: cd /usr/local/nginx-1.12.0 && ./configure && make && make install
- name: 配置自启动文件
copy: src=nginx.service dest=/lib/systemd/system/
- name: 添加自启动
service: name=nginx state=started enabled=no
说明:
hosts:指定要安装的主机 ---在上面hosts已经创建
tasks:安装详细步骤(示例Nginx采用最小化安装)
nginx.service:添加systemctl管理服务
[UNIT]
Deion=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
执行安装:
1.测试主机连通性:
ansible 192.168.174.138 -m ping
2.执行install.yml
ansible-playbook install.yml --syntax-check
语法检查无报错
去管理客户机上查看是否安装成功
ansible 192.168.174.138 -m shell -a "ps -ef | grep nginx && netstat -ntlp | grep 80"
检查目标机器上的nginx进程和80端口正常