近期使用了ansible,在这简单记录一下ansible的使用
使用ansible-playbook的方式执行,首先编写剧本,定义好剧本中需要的变量
ansible-playbook -i vars test.yml
test.yml剧本中编写详细的操作,例如
- name:first ansible
hosts: all
gather_facts: no
tasks:
- name: mkdir
# become: yes
# become_user: "test"
file:
path: /tmp/test/
state: directory
mode: '755'
- name: download package
get_url:
url: "{{pac_url}}"
dest: /tmp/test/test.tar.gz
- name: bak ozone
command: bash -lc 'mv /tmp/test/ /tmp/test.bak.{{timestamp}}'
- name: unarchive package
unarchive:
src: /tmp/test/test.tar.gz
dest: /tmp/test/
copy: no
mode: 0755
vars中设置需要的变量信息如host,username,timestamp等
[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=123456
timestamp="{{lookup('pipe', 'date +%Y%m%d%H%M%SZ')}}"
[all]
11.11.11.11
22.22.22.22
33.33.33.33
对使用到的ansible的模块信息作一下总结:
ansible的file模块
file:
path: /tmp
group: 定义文件的组信息
owner: 定义文件的用户信息
recurse: 是否递归执行
src: 被链接的原文件路径,只适用于state类型是link
dest: 被链接的目的文件路径,只适用于state类型是link
state: directory
mode: 755
state的状态可以表示对该文件的操作:
directory: 如果目录不存在,创建目录
file: 如果文件不存在,不创建
link: 创建软连接
hard: 创建硬连接
touch: 如果文件不存在则创建文件,如果文件存在则修改文件的创建时间
absent: 删除目录、文件或者取消链接文件
ansible的unarchive和archive模块
本模块主要是用来解压和压缩相关的文件
1.本模块能将本地主机的压缩包上传到远程主机上
2.能将远程主机上某个目录的压缩包解压到指定的目录
unarchive:
copy: no|yes no代表从远程解压到指定的目录,yes代表从本地复制到远程主机上
src: 源路径 一般是写到具体的压缩包名
dest: 主机上的解压的路径名
mode:解压后的目录权限
archive:
path: /path/test/111. 要压缩的文件和目录
dest: /path/test/111.tar.gz 压缩后的文件
format: bz2, gz, tar, xz, zip 指定的打包类型
ansible的get_url模块
本模块主要是通过url下载东西,类似于wget
get_url:
dest: 文件的下载到的目的路径
owner: 指定文件的用户
group: 指定文件的组
mode: 指定文件的权限
force: yes | no yes表示下载文件后,如果文件改变则覆盖这个文件,no表示只要该文件存在则不下载
url: 下载的文件的url信息
url_password: 如果下载文件时需要密码
url_username: 下载文件时的用户名信息
user_proxy: no | yes 如果是no则不使用代理,yes表示使用代理
validate_certs: no | yes , no ssl证书不会被验证
ansible的copy模块
本模块主要是将ansible的管理主机上的文件copy到远程主机上
copy:
src: 管理主机上的文件路径
dest: 拷贝到远程主机上的文件路径
force: yes | no, yes表示如果目标路径存在同名文件,并且和本地主机上的内容不同则覆盖,no表示不会覆盖,远程主机的文件保持不变
backup: yes | no ,yes表示如果远程主机上存在该文件,并且内容和要拷贝的内容不同,则将远程主机上的文件备份,no表示不备份
owner: 指定拷贝文件后的用户信息
group:指定拷贝文件后的组信息
mode: 指定拷贝后的文件的权限信息
ansible获取时间戳
定义变量:
timestamp="{{lookup('pipe', 'date +%Y%m%d%H%M%SZ')}}”
使用变量:
"{{timestamp}}"
持续更新中。。。
近期使用了ansible,在这简单记录一下ansible的使用使用ansible-playbook的方式执行,首先编写剧本,定义好剧本中需要的变量ansible-playbook -i vars test.ymltest.yml剧本中编写详细的操作,例如- name:first ansible hosts: all gather_facts: no tasks: - name: mkdir # become: yes # become_user: "test"
安装流浪汉的说明。
我在这里
使用
流浪汉来设置三个运行centos7的测试
服务器
。 通过设置三台
服务器
开始该过程:
这将初始化由提供的Vagrantfile配置的所有虚拟机。 $ vagrant up
这三个虚拟机在具有虚拟盒的NATed网络上配置。 它们是关联的IP:
192.168.60.4
192.168.60.5
192.168.60.6
ansible
config用于设置IP地址,vagrant用户和vagrant ssh密钥。
[app]
192.168.60.4
192.168.60.5
192.168.60.6
#varibles for all servers
[multi:vars]
ansible
_ssh_user=vagrant
[root@
ansible
-master ~]# cat /etc/redhat-release
CentOS
Linux
release 7.2.1511 (Core)
[root@
ansible
-master ~]#
ansible
--version
ansible
2.7.10
config file = /etc/
ansible
/
ansible
.cfg
confi...
copy:
ansible
server -m copy -a 'src=/etc/
ansible
/port/iptables dest=/etc/sysconfig/iptables owner=root group=root backup=yes mode=600'
转载于:https://www.cnblogs.com/nb-blog/p/9183283.html
http://www.
ansible
.com.cn/docs/intro_getting_started.html
1,看文档说按装
ansible
,只需要源码就可以直接启动,并且在被管理节点上不需要安装别的软件,依赖ssh,sftp(可以配置成scp方式)
2,
Ansible
1.3及之后的版本默认会在本地的 OpenSSH可用时会尝试用其进行远程通讯.这会启用ControlPersist(一个性...
vi hosts
[xxx]
xx.xx.xx.xx
ansible
_connection=ssh
ansible
_ssh_user=apps
ansible
_ssh_pass=xxxxxxxx
#创建目录,目录存在不操作
ansible
all -m file -a "path=/apps/.ssh/ state=directory "
#修改目录权限
ansible
all -m file...
ansible
是什么
使用
Shell脚本配置机器非常麻烦 (Configuring machines with shell scripts is terribly messy)
Do you want to start using
Ansible
? Are you already using it, but coming up against challenges? Even if you don...
一、并发运行
ansible
默认只会创建5个进程,所以一次任务只能同时控制5台机器执行。那如果在
使用
ansible
的过程中有大量的机器需要控制,或者在
使用
中想减少进程数,以上情况下,可以采取异步执行。
ansible
的门票快可以把task放入后台,然后轮循它,这使得在一定进程数下能让大量需要的机器同时运作起来。
使用
async和poll这两个关键字便可以并行运行一个任务。async这个关键字触发
ansible
并行运作任务,而async的值是
ansible
等待运行这个任务的最大超时时间,而poll就是ans