SSH登陆到一台服务器,安装软件包,编辑配置文件,然后换下一台继续。
目前发出来的的九篇文章,有三篇都在记录自己配的各种环境... 现在接触到自动化配置工具Ansible,希望可以解决换个服务器就要像上面那样重新配环境的难题。
Ansible的模块索引:http://docs.ansible.com/ansible/latest/modules_by_category.html
一、准备工作
设计初衷:在若干服务器上从零开始执行所有必须的配置与操作。
Ansible的脚本称为playbook,基于YAML语言。
需要具备的基础知识:
- 使用SSH连接到远程服务器
- 处理Bash命令行的输入输出
- 安装软件包
- 使用sudo命令
- 检查和设置文件权限
- 启动和停止系统服务
- 设置环境变量
- 编写脚本
配置PPA及安装ansible,执行如下命令:
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
ping一下测试安装是否成功:
成功了,其中
“changed”: false
表示没有改变服务器状态,“ping”: “pong”
是由ping模块定义的输出。
二、连接远程主机(服务器)
为了不用每次都输密码,在本地机子上生成私钥:
ssh-add /root/.ssh/id_rsa
如果系统提示could not open a connection to your authentication agent
则需要先执行一下命令:
ssh-agent bash
如果系统提示Permissions 0640 for '目录/root/.ssh/id_rsa' are too open
,只要把权限降到0600
就ok了:
chmod 0600 /root/.ssh/id_rsa
然后生成公钥:
复制id_rsa.pub里的内容,在远程机.ssh目录下新建一个authorized_keys文件,将拷贝的内容粘贴进去。
编辑/etc/ansible/hosts文件,按如下形式将远程主机(服务器)添加进去,每个主机一行:
别名 ansible_ssh_host=IP地址或域名 ansible_ssh_port=端口(默认为22) ansible_ssh_user=远程登录用户名 ansible_ssh_private_key_file=私钥地址(一般在/home/你的登录用户名/.ssh/id_rsa)
PS. 远程主机(服务器)最好装有python2.5及以上版本,或低版本python加装一个python-simplejson模块