ansible-doc 是关于查看ansible 相关命令,日常运用的非常多 相当于man help

ansible-doc 相当于man help
ansible-doc --help
Usage: ansible-doc [options] [module...]Options:-h, --help            show this help message and exit# shellcheck disable=SC2215-l, --list            List available modules-M MODULE_PATH, --module-path=MODULE_PATHspecify path(s) to module library (default=None)-s, --snippet         Show playbook snippet for specified module(s)-v, --verbose         verbose mode (-vvv for more, -vvvv to enableconnection debugging)--version             show program's version number and exit'
ansible host 支持逻辑符来匹配不同的设置
ansible 的Host-pattern
All: 表示所有Inventory 中的所有主机
ansible all -m ping*:通配符
ansible "*" -m ping
ansible 192.168.1.* -m ping
ansible "*server" -m ping
或关系
ansible "websrvs:appsrvs" -m ping
ansible "192.168.1.10:192.168.2.20" -m ping逻辑与 ansible "websrvs:&dbsrvs" -m ping
逻辑非 ansible "websrvs:!dbsrvs" -m ping
综合逻辑 ansible "websrvs:dbsrvs:&appsrvs:!ftpsrvs" -m ping
正则表达式 "~(web|db).*\.magedu\.com" -m ping
ansible-galaxy 可以从网站上下载对应的roles
连接https://galaxy.ansible.com 下载相应的roles
ansible-galaxy list
安装galaxy
ansible-galaxy install geerlingguy.nginx- downloading role 'nginx', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-nginx/archive/2.8.0.tar.gz
- extracting geerlingguy.nginx to /etc/ansible/roles/geerlingguy.nginx
- geerlingguy.nginx was installed successfully
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# ls
geerlingguy.nginx
[root@ansible roles]# cd geerlingguy.nginx/
[root@ansible geerlingguy.nginx]# ls
defaults  handlers  LICENSE  meta  molecule  README.md  tasks  templates  vars
[root@ansible geerlingguy.nginx]# tree .
.
├── defaults
│   └── main.yml
├── handlers
│   └── main.yml
├── LICENSE
├── meta
│   └── main.yml
├── molecule
│   └── default
│       ├── converge.yml
│       └── molecule.yml
├── README.md
├── tasks
│   ├── main.yml
│   ├── setup-Archlinux.yml
│   ├── setup-Debian.yml
│   ├── setup-FreeBSD.yml
│   ├── setup-OpenBSD.yml
│   ├── setup-RedHat.yml
│   ├── setup-Ubuntu.yml
│   └── vhosts.yml
├── templates
│   ├── nginx.conf.j2
│   ├── nginx.repo.j2
│   └── vhost.j2
└── vars├── Archlinux.yml├── Debian.yml├── FreeBSD.yml├── OpenBSD.yml└── RedHat.yml8 directories, 23 files
[root@ansible geerlingguy.nginx]#
删除
[root@ansible ~]# ansible-galaxy remove geerlingguy.nginx
- successfully removed geerlingguy.nginx
[root@ansible ~]#
#ignore_errors 用于脚本执行时一些报错,但可以忽略的问题
执行 playbook 时 如果命令或者脚本的退出码不为零,可以使用如下方式替代
tasks:- name: run this command and ignore the resuleshell: /usr/bin/somecommand || /bin/true
或者使用ignore_errors 来忽略错误信息:
tasks:- name: run this command and ignore the resuleshell: /usr/bin/somecommandignore_errors: True
handlers 和notify 结合使用触发条件
Handlers
是task列表,这些task与前述的task并没有本质上的不同,用于当关注的资源发生变化时,才会采取一定的操作
Notify此action可用于在每个play的最后被触发,这样可避免多次有改变发生时每次都执行指定的操作,
仅在所有的变化发生完成后一次性的执行指定操作。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作
"
- hosts: websrvsremote_user: roottasks:- name: install httpd packageyum: name=httpd- name: copy conf filecopy: scr=files/httpd.conf dest=/etc/httpd/conf backup=yesnotify: restart service- name: start serviceservice: name=httpd state=started enable=yeshandlers:- name: restart serviceservice: name=httpd state=restarted##备注 notify 可以出发多个action
ansible-playbook -c +xxx.yml 文件用来检查语法是否正确在脚本中可以使用tags 标签 来指定某个动作执行
ansible-playbook -t tags1,tags2 httpd.ymlplaybook 中变量使用
变量名:仅能由字符、数字和下划线组成,且只能以字符开头
变量来源:1.ansible setup facts 远程主机的所有变量都可以直接调用"---
- hosts: node1tasks:- name: set hostnamehostname: name=www{{ ansible_all_ipv4_addresses }}.test.com
# 其中ansible_all_ipv4_addresses 是 主机的主机属性 这个变量直接可以使用"
 2.在/etc/ansible/hosts 中定义普通变量:主机组中主机单独定义,优先级高于公共变量公共(组)变量:针对主机组中所有主机定义统一变量
"
#hosts 中引用变量
all:hosts:node1:ansible_connection: sshansible_host: 10.100.201.161ansible_ssh_pass: Huayun@123ansible_ssh_user: roothttp_port: 80node2:ansible_connection: sshansible_host: 10.100.201.162ansible_ssh_pass: Huayun@123ansible_ssh_user: roothttp_port: 81children:hosts:node1:node2:
"
变量是http_port 在脚本中引用
#change.yml
---
- hosts: node1tasks:- name: set hostnamehostname: name=www{{ http_port }}.test.com
执行脚本 查看是否引用完成
"
[root@ansible ansible]# ansible-playbook change.ymlPLAY [node1] *******************************************************************TASK [setup] *******************************************************************
ok: [node1]TASK [set hostname] ************************************************************
changed: [node1]PLAY RECAP *********************************************************************
node1                      : ok=2    changed=1    unreachable=0    failed=0[root@ansible ansible]# ansible node1 -m shell -a "hostnamectl"
node1 | SUCCESS | rc=0 >>Static hostname: www80.test.comIcon name: computer-vmChassis: vmMachine ID: 91b7f0cb876448cb976ffe4c3c2baeddBoot ID: e653734b65d54c1d8f8cd2297be7892dVirtualization: vmwareOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-862.el7.x86_64Architecture: x86-64
"
 3.通过命令行指定变量,优先级最高
  ansible-playbook --e varname=value
ansible all -m setup  #输出远程主机中的变量
查看某一个变量信息可以使用filter 过滤出来
[root@ansible ~]# ansible all -m setup -a "filter=ansible_hostname"
node2 | SUCCESS => {"ansible_facts": {"ansible_hostname": "bbs"},"changed": false
}
node1 | SUCCESS => {"ansible_facts": {"ansible_hostname": "bbs"},"changed": false
}
"
对变量赋值 可以在执行语句时 直接-e 后面跟上变量名=值名 进行
ansible-playbook -e "var1=value1" xxx.yml
比如:
"
---
- hosts: appnameremote_user: roottasks:- name: install paakageyum: name={{ var1 }}- name: start serviceservice: name={{ var1 }} state=started enalbed=yesansible-playbook -e "var1=value1" xx.yml
 4.在playbook中定义
    vars:- var1:value1- var2: value2
"---
- hosts: appnameremote_user: rootvars:- var1: httpdtasks:- name: install paakageyum: name={{ var1 }}- name: start serviceservice: name={{ var1 }} state=started enalbed=yesansible-playbook xxx.yml
"
  5.在独立的变量yml文件中定义
专门开存放变量的文件,例如vars.yml
"
---
var1: httpd
var2: vsftpd
"
调用变量在yml 中直接调用这个文件就可以了
testvars.yml---
- hosts: node1remote_user: rootvars_files:- vars.ymltasks:- name: install packageyum: name={{ var1 }}- name: create filefile: name=/data/{{ var2 }}.log state=touch

ansible基本用法1_base相关推荐

  1. ansible高级用法(压测脚本)

    记录一个ansible高级用法与shell结合_kali_yao的博客-CSDN博客_ansible shell 注:由于ansible的远程原则必须要key(也就是ssh远程测试),所以在配置文件中 ...

  2. ansible register 用法

    ansible register 用法 ansible register 这个功能非常有用.当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般 ...

  3. Linux之Ansible入门用法(实验解析)

    Linux之Ansible入门用法(实验解析) 实验前提: 三台CentOS7和一台CentOS6,其中一台CentOS7当作Ansible堡垒机,其余三台主机当作被控主机.四台主机均为最小化安装,全 ...

  4. 记录一个ansible高级用法与shell结合

    未经本人同意不得转载 目录 一.ansible安装(ansible的配置与roles运用) 1.ansible的概述 2.安装python 3.ansible运用前准备 二.修改roles 1.初步修 ...

  5. Ansible 详细用法部署安装

    #一.概述 运维工具按需不需要有代理程序来划分的话分两类: agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix agentless(无须代理工 ...

  6. ansible 高级用法

    1.控制每次同时更新的主机数量 im test_serial.yml --- - hosts: allserial: 2 #每次只同时处理2个主机max_fail_percentage : 50 #当 ...

  7. Ansible registers用法

    Ansible registers用来捕捉一个task的输出作为一个变量.在Ansible的其它地方我们可以使用该变量,例如logging等. 这种变量包含了这个任务的返回值.当我们使用不同的模块时, ...

  8. Ansible第一篇:基础

    一.配置文件 ansible.cfg /etc/ansible/ansible.cfg 是ansible安装好后的默认配置文件,但是配置文件可以存在于多个地方,ansible读取配置文件的顺序依次是: ...

  9. python3连接mysql获取ansible动态inventory

    脚本地址:https://github.com/AlbertCQY/scripts/tree/master/ansible 脚本用法:README.txt 1.脚本用法 bestpay用户 cd /t ...

最新文章

  1. halcon基本语法和常用算法
  2. diamond operator is not supported in -source 1.5和source release 8 requires target release 1.8的问题
  3. servlet,springmvc,springboot转发时页面静态资源404问题
  4. Java核心API需要掌握的程度
  5. 用sklearn mysql_Sklearn之Linear Regression
  6. IT男1-10分打分标准,请对号入座!
  7. Google Android操作系统内核编译图文教程
  8. 文本分类器,可自由加载BERT、Bert-wwm、Roberta、ALBert以及ERNIE1.0
  9. 奶粉中的php是什么,婴儿配方奶粉的分类及用途
  10. Linux下informix的安装(最简单超详细)
  11. Python官方开发文档(中文版)
  12. ccrpipa6.ocx 和mswinsck.ocx 等文件缺失问题解决(用于TCP调试助手)
  13. Adobe Photoshop CC 2014图文永久安装教程
  14. 微信公众号接口开发--回复消息
  15. 从google code上clone代码出现 couldn't resolve proxy '(null)' while accessing 的解决方法(2012/12/06)
  16. 比原链CEO朗豫:DeFi让用户真正理解区块链,意义重大
  17. Dynamics 365 IFD设置反向代理后无法跳转登录页的解决方法
  18. 贯入用计算机怎样换算,标准贯入试验应用和其杆径换算探究.doc
  19. 玩转无线路由之DD-WRT基础扫盲
  20. 这是什么代码帮我看看

热门文章

  1. HashMap的排序方法
  2. Elasticsearch搜索引擎第十一篇-Suggest查询建议
  3. 跟我学习Spring Security--在线宠物商店开发(二)
  4. All In love
  5. 民生银行信用卡心得---网络整理
  6. 如何成为一名说服大师
  7. 2020笔记本性价比之王_最适合打游戏的笔记本价格3000左右,三款2020游戏本性价比之王...
  8. TIA Portal(博途)V15 安装教程
  9. C#开发:分享开源汉字转拼音
  10. ssh登陆触发钉钉预警