环境

Ubuntu 16.04

ansible 2.0.0.2

配置快捷登录

配置在linux服务器上快速远程其他服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 编辑ssh连接配置文件
sudo vi /etc/ssh/ssh_config
# 在文档最底部加入如下内容(Host:自定义的连接名称;User:用户名;HostName:IP;Port:远程端口,一般linux服务器都是22端口):
Host test
User root
HostName 192.168.1.16
Port 22
# Esc退出编辑模式,并输入以下内容保存更改
:wq
# 快捷连接
ssh test
# 此时连接还需输入密码,需要在本地生成密钥,一路回车,建议不要设置密码
ssh-keygen -t rsa -P ''
# 将本地生成的公钥复制到需远程的服务器上,执行完成之后就可以无需密码登录了
ssh-copy-id -i ~/.ssh/id_rsa.pub test

安装 ansible

1
sudo apt install ansible -y

配置 ansible 操作组:

1
2
3
4
5
6
7
8
9
10
11
# 编辑该文件
sudo vi /etc/ansible/hosts
# 如下形式:
[test]
test
test1
# 如果没有配置上述的快捷登录就需要这样写
[218]
192.168.1.21 ansible_user=root
[aliyun]
100.100.100.100 ansible_user=root

ansible 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#test 目录下创建目录
ansible test -m command -a "mkdir ansible-deployment chdir=test/"
# 将文件拷贝到指定目录
ansible test -m copy -a "src=docker-compose.yml dest=bsl/ansible-deployment"
# 在指定目录创建目录
ansible test -m command -a "mkdir app chdir=bsl/ansible-deployment/"
# 在指定目录下执行命令
ansible test -m command -a "docker-compose up -d chdir=test/ansible-deployment/"
ansible test -m copy -a "src=index.html dest=test/ansible-deployment/app"
ansible test -m command -a "docker-compose ps chdir=test/ansible-deployment/"

# 在指定目录下执行命令
ansible test -m command -a "docker-compose down chdir=test/ansible-deployment/"
# 删除命令
ansible test -m command -a "rm -r test/"

# 使用模块循环删除
ansible-playbook delete.yml /etc/ansible/hosts
# 执行查看命令
ansible test -m command -a "ls test/"

delete.yml 内容

1
2
3
4
5
6
7
8
9
- hosts: test # 指定的组
tasks:
- name: Remove a directory if it exist
#file模块主要用于远程主机上的文件操作
file:
# 定义目录的路径
path: test/ansible-deployment
# absent 删除目录、文件或者取消链接文件
state: absent
  • file模块参数:
参数 说明
force 需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes
group 定义文件/目录的属组
mode 定义文件/目录的权限
owner 定义文件/目录的属主
path 必选项,定义文件/目录的路径
recurse 递归的设置文件的属性,只对目录有效
src 要被链接的源文件的路径,只应用于state=link的情况
dest 被链接到的路径,只应用于state=link的情况
state directory:如果目录不存在,创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
absent:删除目录、文件或者取消链接文件