手头的服务器越来越多,下决心好好学学ansible了

#本机安装 使用本地机器(mac)作为控制端

pip install ansible

#加入被控机器

以青云上的两台服务器为例(ubuntu12.04 64bit),地址分别为:

  • 209.9.106.126 (insight)
  • 207.226.143.91 (cypress)

以及内网的一台机器:

  • 10.10.100.114 (gogs)

vim Inventory

1
2
3
4
5
6
7
8
[insight]
insight 209.9.106.126 ansible_connection=ssh  ansible_ssh_user=ubuntu

[cypress]
cypress 207.226.143.91  ansible_connection=ssh  ansible_ssh_user=ubuntu

[gogs]
10.10.100.114 ansible_connection=ssh  ansible_ssh_user=ubuntu

###ssh免密码配置 最简单的方式是:ssh-copy-id -i ~/.ssh/id_rsa.pub 209.9.106.126

###跑跑看 ansible -i Inventory all -m ping (以下为输出)

1
2
3
4
5
6
7
8
9
:::text
insight | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
cypress | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

#默认配置 vim ~/.ansible.cfg

1
2
3
# .ansible.cfg
[defaults]
hostfile=~/ansible_workplace/Inventory

之后就可以不用-i了

###给受控机器添加SSH authorized key 批量配置authorized key的话,使用核心模块authorized_key_module

ansible -i Inventory insight -m authorized_key -a “user=ubuntu key=https://github.com/wwj718.keys" #使用核心模块-m authorized_key,使用Ad-hoc(快速运行)

#随便做些探索 ansible cypress -a “ls ~” ansible insight -a “ls ~” ansible all -a “ls ~”

###copy file(local => remote) echo “#hello ansible copy” > /tmp/hello.py ansible all -m copy -a “src=/tmp/hello.py dest=/tmp” ansible all -a “cat /tmp/hello.py”

以下为输出:

1
2
3
4
5
6
:::text
cypress | SUCCESS | rc=0 >>
#hello ansible copy

insight | SUCCESS | rc=0 >>
#hello ansible copy

###安装软件包 ansible gogs -m apt -a ‘name=nethogs’ -u wwj718 –sudo -K

#资源

#参考资料