Ansible模块:远程命令相关
参考博文:ansible笔记(6):常用模块之命令类模块
1.command 模块command 模块不支持 <>|;& 等操作
command 模块参数
free_form 必须参数,需要远程执行的命令
chdir 指定一个目录,在执行命令前先进入到指定目录中
creates 这个参数不会帮助我们创建文件,作用是当指定的文件存在时,就不执行对应命令
removes 与create相反,作用是指定的文件不存在时,就不执行对应命令。
1234567891011# 执行远程命令$ ansible webserver -m command -a "ifconfig"# cd到指定目录后,再执行远程命令$ ansible webserver -m command -a "chdir=/root ls -l"# creates 如果文件存在,不执行命令$ ansible webserver -m command -a "chdir=/root creates=config ls -l" # removes 如果 ...
Ansible playbook:facts变量
Write by lyc at 2019-10-29参考博文:ansible笔记(16):变量(三)
Ansible factsfacts 组件是用来收集主机信息的,收集的信息是json格式的,任何一项都可以被当作变量在playbook,jinja2模板中引用。
1.获取主机信息1234$ ansible test -m setup# filter筛选指定的facts信息$ ansible localhost -m setup -a "filter=*ipv4"
2.引用 ansible_facts
facts数据的顶级key为ansible_facts,每次playbook会自动注册成变量。
所以facts数据可以直接通过变量引用,甚至顶级key_name ansible_facts都要省略
1234---- hosts: webserver tasks: - debug: var=ansible_eth0.ipv4.address
3.gather_facts: no 不采集主机信息忽略采集操作系统信息,提高执行效率。
123--- # copy ...
Ansible playbook:handlers触发功能
参考博文:ansible笔记(12):handlers的用法
1.Ansible playbook handlers剧本触发功能
handlers 当tasks执行成功后(change提示有变化),会触发 handlsers 执行,tasks 下通过 notify 关联 handlsers 的 name
handlers 执行的顺序与在playbook下定义的顺序相同,与被notify调用的顺序无关
所有tasks执行完毕后,才会执行各个handler,并不是执行完某个task后,立即执行对应的handler
如果你想要在执行完某些task以后立即执行对应的handler,则需要使用meta模块
123456789101112131415shell > cat httpd-install.yaml --- # install httpd server- hosts: webserver tasks: - name: Install httpd yum: name=httpd,httpd-tools state=installed - name: Co ...
Ansible模块:文件操作
参考博文:ansible笔记(4):常用模块之文件操作
1.copy 模块copy 模块参数
src 定义本地源文件路径
dest 定义远程目录文件路径(绝对路径)
owner 属主
group 属组
mode 权限
content 取代src=,表示直接用此处的信息生成为文件内容
backup backup=yes,如果文件有变化,则先备份原文件
copy 示例
如果远程主机没有同名文件,文件会被发送过去
如果远程主机有同名文件,并且发送的文件没有变化,那么不会执行拷贝动作
如果远程主机有同名文件,并且和本地不一致,那么远程主机的同名文件会被拷贝覆盖
backup=yes 参数备份
1234567891011# 远程拷贝文件$ ansible webserver -m copy -a "src=/root/1.txt dest=/root/1.txt mode=0600 owner=root group=root backup=yes"# 远程拷贝目录$ ansible webserver -m copy -a "src=/root/dir1 d ...
Ansible playbook:tags标签
Write by lyc at 2019-10-27参考博文:tags用法
1.Ansible playbook tags标签
tags可以帮助我们对tasks打标签
在执行playbook时,可以借助tags标签,指定执行哪些任务或指定不执行哪些任务。
tags和moudul同级
2.tags 用法tags 3种定义方法12345678910# example1: tags: CentOS6,CentOS7# example2: tags: - CentOS6 - CentOS7 # example3: tags: ['CentOS6','CentOS7']
ansible-playbook 执行tags
--list-tags 查看ansible-playbook下有哪些tags标签
--tags=tag1,tag2 只执行ansible-playbook下的指定tag
--skip-tags=tag1,tag2 不执行ansible-playbook下的指定tag
1234567891011121314 ...
logrotate 切割 Nginx accesslog
Write by lyc at 2019-10-19日志切割之Logrotate
logrotate 切割 Nginx accesslog1.logrotate 安装logrotate 是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。
例如,你可以设置 logrotate,让 /var/log/foo 日志文件每 30天轮循,并删除超过 6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。
1yum install logrotate crontabs -y
/etc/logrotate.conf 主配置文件一般不做修改。
/etc/logrotate.d/ 针对指定日志的独立配置文件中目录。
参数说明:
daily,weekly,monthly 指定转储周期为每天,每周,每月
missingok 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
rotate 7 指定日志文件删除之前转储的次数,0 指没有备份,7 指保留7 个备份
compress,nocompress 通过gzip压 ...
Ansible playbook:when条件判断
Write by lyc at 2019-9-26参考博文:Ansible系列(六):循环和条件判断ansible笔记(27):条件判断与tests
when 条件判断
参考博文:Ansible之Playbooks的when语句
在ansible中,只有when可以实现条件判断:
when判断的对象是task,所以和task在同一列表层次。它的判断结果决定它所在task是否执行,而不是它下面的task是否执行
when中引用变量的时候不需要加{{ }}符号,直接输入变量名即可
1.when: 逻辑判断逻辑与123456789# 逻辑与:and写法when: ansible_os_family == 'RedHat' and ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7'when: ansible_os_family == 'Debian' and a ...
Ansible playbook:循环
Write by lyc at 2019-9-26参考博文:ansible笔记(19):循环(一)
1.with_items 迭代列表
利用with_items子句生成一个循环列表,使用{{ item }} 固定模式来调用变量,循环调用的是with_items 生成的整个列表。
123456789---- hosts: webserver tasks: - name: with items test shell: echo "this is -> {{ item }}" with_items: - 1.txt - 2.txt - 3.txt
with_items列表值是字典,使用{{ item.key }}的方式来调用
123456789---- hosts: webserver tasks: - name: create user01-03 u ...
Ansible playbook:vars变量
Write by lyc at 2019-9-25参考博文:Ansible系列(五):各种变量定义方式和变量引用ansible笔记(14):变量(一)
1.ansible-playbook roles定义变量
由于role是整合playbook的,它有默认的文件组织结构。其中有一个目录vars,其内的main.yml用于定义变量。
还有defaults目录内的main.yml则是定义role默认变量的,默认变量的优先级最低。
roles定义变量 vars/main.yml12345678---$ vim vars/main.yml nginx_cmd: /usr/local/nginx/sbin/nginx# 嵌套字典nginx_conf: conf80: /usr/local/nginx/conf/vhosts/80.conf conf443: /usr/local/nginx/conf/vhosts/443.conf
debug 获取变量 tasks/app_test.yml12345678910111213---- debug: var=nginx_cmd tags: ...
Ansible playbook:基础
参考博文:Ansible系列(四):playbook应用和roles自动化批量安装示例
Ansible playbook
playbook 是使用不同的模块组合在一起,完成一件事情或脚本任务。
playbook 通过 yaml 语法识别描述的状态文件,扩展名是 .yaml 或 .yml
playbook 在执行前会自动收集fact信息
1.ansible-playbook 命令参数
-e "key=KEY" 传入变量
--flush-cache 清空收集到的fact信息缓存
--list-tags 列出所有可获取到的tags
--list-tasks 列出所有将要被执行的tasks
-t TAGS,--tags=TAGS 以tag的方式显式匹配要执行哪些tag中的任务
--skip-tags=SKIP_TAGS 以tag的方式忽略某些要执行的任务。被此处匹配的tag中的任务都不会执行
--step 在每一个任务执行前都进行交互式确认
--syntax-check 检查playbook语法
-C 模拟执行playbook
-v -vv -vvv -vvvv 显示 ...