ansible基础
一、ansible安装
yum install -y epel
yum install ansible
二、配置ansible
- 配置文件
host_key_checking=False ssh登录是不提醒加入秘钥
module默认的模块,默认是command - inventory文件
默认是/etc/ansible/host - host文件的配置
[hd] 172.16.37.131 172.16.37.133 172.16.37.142 [sd] 172.16.37.134 [redis] 172.16.37.130 [admin] 172.16.37.135 [data] 172.16.37.136 [game] 172.18.37.139 [open] 172.18.37.140 [mobile] 134.64.4.189 134.64.4.190 [db] 172.18.37.137 172.18.37.138 172.18.37.150 172.18.37.151 [redis] 172.18.37.130 172.18.37.145 [api-bak] 172.18.37.146 [self] 172.18.37.148 [activity] 172.18.37.147 [logbak] 172.18.37.141 [test] 172.18.37.132 [waiwang:children]#主机组的组 hd sd admin data mobile game [servers:children] hd redis admin data game open mobile db logbak redis api-bak self activity sd [test:vars] ansible_ssh_user=pp ansible_ssh_pass='123' ansible_su_pass='1234' [servers:vars] ansible_ssh_user=pp ansible_ssh_pass=1234 ansible_su_pass='1234' #ansible_become=true #取消这个注释,默认用root用户远端执行 ansible_become_method=su ansible_become_user=root ansible_become_pass='1234'
三、ah-hoc模式下使用模块
- ad-hoc命令格式: hosts -m 模块名 -a '参数选项' -K 登录密码 -b 提权 --become-method=su/sudo提权方法 -B 后台运行超时时间 -C 测试是否正常执行 -f ansible并行执行的个数 -i 指定主机清单文件
- 常用模块:
command模块:运行shell命令
主要参数 creates,removes 检查状态在判断是否执行,creates是文件不存在执行,removes相反,文件存在时执行
chdir 切换目录执行
举例:ansible host -m command -a 'chdir=/tmp removes=/home/test/testfile ls' 表示切换到/tmp目录,当/home/test/testfile文件存在是,执行ls命令
command模块不能执行管道符号,可以用shell模块来取代 - shell模块,可以远程执行shell命令 ansible host -m shell -a 'shell命令'
- raw模块,目标主机没有python环境时可以用raw模块来执行命令
- file模块 ,操作远程主机文件, group数组 owner 所有者 mode权限 path比选项,文件路径, recurese递归操作
软连接相关 force强制软连接 =yes/no src=软连接源文件 dest=软连接目的 state=link时候使用
state参数 : directory目录操作 link=软连接操作 touch 创建或修改文件时间 absent 删除文件 删除目录或者取消连接 - copy模块 :将文件复制到远程主机
参数:backup=yes 复制到远端存在的文件,备份
src=本地文件路径 文件或者目录 以/结尾的只复制目录中的内容, 没有/结尾的复制整个目录
dest远程主机的绝对路径
content指定文件内容
directory_mode目录权限
force强制覆盖 - service 模块
name安装的模块名称
enabled开机启动
sleep重启之间的沉睡时间
state:started,stoped,restarted - cron模块
job执行的任务
name 任务名称
minute hour day month执行的时间参数
user 执行的用户 - yum模块
state=installed 安装
name=包的名字
enablerepo使用仓库
例如 ansible host -m yum -a "name=redis state=installed enablerepo=repl" - user模块
用户相关操作
修改用户的属组 ansible host -m user -a 'name=用户名 groups=附加组 group=组名' groups配合append=yes使用,可添加多个附加组,不然会覆盖
修改用户密码 python-->import crypt-->crypt.crypt('zjb1988920') 会得到一串密码
使用ansible host -m user -a 'name=用户名 password=那串密码' 密码记得用双引号 - syschronize
类似rsync同步
ansible 172.16.213.77 -m synchronize -a 'src=/mnt/a dest=/tmp'
ansible 172.16.213.77 -m synchronize -a 'mode=pull src=/mnt/a dest=/tmp' - setup模块
setup模块,主要用于获取主机信息,在playbooks里经常会用到的一个参数gather_facts就与该模块相关
[root@linux ~]# ansible 172.16.213.77 -m setup -a 'filter=ansible_*_mb' //查看主机内存信息
[root@linux ~]# ansible 172.16.213.77 -m setup -a 'filter=ansible_em[1-2]' //查看地接口为em1-2的网卡信息
[root@linux ~]# ansible all -m setup --tree /tmp/facts //将所有主机的信息输入到/tmp/facts目录下,每台主机的信息输入到主机名文件中(/etc/ansible/hosts里的主机名) - get_url下载文件
ansible 172.16.213.77 -m get_url -a "url=http://172.16.213.157/Python-2.7.14.tgz dest=/mnt/python-2.7.14.tgz"