[create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml] ---- 加密一个文件 ansible-vault...encrypt include.yml ---- 查看一个文件 [root@m01 m01]# ansible-vault view include.yml Vault password: -...import_playbook: handler.yml - import_playbook: when.yml ---- 修改加密的文件内容 [root@m01 m01]# ansible-vault...edit include.yml ---- rekey 修改密码 [root@m01 m01]# ansible-vault rekey include.yml Vault password:...ansible-playbook include.yml --vault-password-file=ansible.pass
可以为playbook中的任务打tag标签,方便在ansible-playbook中设置只执行哪些被打上tag的任务或忽略被打上tag的任务。...Ansible 2.4 起引入 include 和 import 的概念 import 是静态导入,会在playbooks解析阶段将父和子task变量全部读取并加载 import_playbook,...task/ntupdate.yaml 来直接导入 task 或 playbook 已经不推荐这么做,将来会被废弃 导入 playbook 即加载一个或多个play 导入playbook可以使用 import_playbook...- import_playbook: playbooks/web.yml Role role 需要一个特定的目录结构,执行时会自动加载定义好的文件如vars_files,tasks,handles...参考 https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse.html
/startup.sh & $ ansible-playbook tomcat.yml --syntax-check #语法检查 $ ansible-playbook tomcat.yml playbook...变量定义与使用 命令行定义使用变量 $ ansible-playbook nginx/nginx.yml --list-tags $ ansible-playbook nginx/nginx.yml...192.168.56.12 $ cat lnmp.yml --- - import_playbook: nginx.yml - import_playbook: mysql.yml - import_playbook...: php.yml $ cat lnmt.yml --- - import_playbook: nginx.yml - import_playbook: mysql.yml - import_playbook...测试执行 $ ansible-playbook -i hosts lnmt.yml #部署lnmt $ ansible-playbook -i hosts lnmp.yml
Playbook示例 首先看一个最简单的示例,基本全是YAML语法: $ tree -L 2 . ├── ansible.cfg ├── example1.yml ├── hosts.yml └── templates...执行一下: 1 ansible-playbook example1.yml 创建可重用的Playbook 但为了代码的可维护性与重用,一般会重新组织下代码,如下: $ tree -L 4 . ├──...ansible.cfg ├── example1.yml ├── hosts.yml └── roles └── httpd ├── handlers │ └...如果部署的项目很复杂,这时Playbook文件会很大,这时可以用import_playbook按不同业务维度拆分Playbook文件,如下: - import_playbook: playbooks/buz1....yml - import_playbook: playbooks/buz2.yml 复用其它role 如果在一个role的task list里想复用另一个role,可以使用import_role,如下
tag.yml --list-tags [root@m01 m01]# ansible-playbook tag.yml -t httpd_server [root@m01 m01]# ansible-playbook...tag.yml -t install_httpd,confiure_httpd [root@m01 m01]# ansible-playbook tag.yml --skip-tags httpd_server... 只调用task:include_tasks 调用整个task文件:include (新版本:import_playbook) 在saltstack中,叫做top file入口文件。...- include: nfs.yml - include: rsync.yml 示例三 - import_playbook: httpd.yml - import_playbook: nfs.yml...- import_playbook: rsync.yml playbook忽略错误 默认playbook会检测task执行的返回状态,如果遇到错误则会立即终止playbook的后续task执行,然鹅有些时候
写在前面 ---- 学习遇到 DNS 自动化部署的一个 Ansible 剧本,这里分享给小伙 部署使用 Bind9 ,包括主从 DNS 构建,缓存 DNS 构建,缓存使用 unbound 剧本相对简单...涉及到的文件: [student@workstation dns-auto]$ tree . . ├── ansible.cfg ├── ansible-starter-files │ └── configure_primary.yml.starter...secondary-named.backend.conf │ └── secondary-named.conf ├── inventory └── templates └── unbound.conf.j2 ansible...配置文件 [student@workstation dns-auto]$ cat ansible.cfg [defaults] inventory=....--- - import_playbook: configure_primary.yml - import_playbook: configure_secondary.yml - import_playbook
为定义的实际执行的主剧本,这里通过,这里通过import_playbook模块来引入一个外部的调用角色的模块。...(import_task,import_playbook),在playbook运行之前,Ansible在最初解析的时候预处理导入的内容 和Java web体系中的Jsp脚本有些类似,通过include指令和...- name: Deploy HAProxy import_playbook: deploy_haproxy.yml - name: Deploy Web Server import_playbook...: deploy_apache.yml - name: Deploy Web App import_playbook: deploy_webapp.yml 执行顺序为,创建LB、创建web Serve...clean.yml deploy_haproxy.yml inventory site.yml appservers.yml deploy_apache.yml deploy_webapp.yml
Ansible-with_items 通过with_items进行循环 语法 {{ item }}: 为读取with_items的固定写法 with_items: 是一个列表,下面可以有多个不同的内容...include_tasks: starthttpd.yaml # 两种写法都可以 多个playbook合成 如果你写的playbook存在多个文件,你只想执行一个playbook,那么可以使用import_playbook...import_playbook: 引入你需要的playbook文件,必须是一个完整的playbook文件 - import_playbook: ..../tasks1.yaml - import_playbook: ..../tasks2.yaml Ansible-ignore_errors 在Ansible中进行错误的忽略 - hosts: test remote_user: root gather_facts
192.168.133.123 # 在/etc/ansible目录下创建目录group_vars,然后再创建文件web.yml,以组名命名的yml文件 vim /etc/ansible/group_vars.../web.yml # 内容如下 ansible_ssh_user: root ansible_ssh_pass: 123456 测试命令 ansible web -a 'ls /' ?...httpd.yml -t "configure" 跳过指定tags的命令:ansible-playbook httpd.yml --skip-tags "install" include包含 我们可以把任务单独写在一个...copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf # total.yml - import_playbook: ..../a.yml - import_playbook: .
通过ansible批量管理三台服务器,使三台服务器实现备份,web01、nfs、backup,把web和nfs上的重要文件被分到backup上,主机ip地址分配如下 Character IP地址 IP地址...nfs] 172.16.1.31 ansible_ssh_private_key_file=/root/.ssh/test_id_rsa [web] 172.16.1.7 ansible_ssh_private_key_file...=/data fstype=nfs opts=defaults state=mounted 把所有的剧本合到一起来执行 [root@m01-61 playbook]# cat all.yaml - import_playbook...: /playbook/base.yaml - import_playbook: /playbook/rsync.yaml - import_playbook: /playbook/nfs.yaml -...import_playbook: /playbook/web_nfs.yaml
]$ ansible-playbook useradd.yml -C 用loop循环 [greg@control ansible]$ vim useradd.yml 1 --- 2 - name...]$ ansible-playbook yum.yml -C item.name/item.groups/item.uid [greg@control ansible]$ vim useradd.yml...]$ ansible-playbook forks.yml -f 5 [greg@control ansible]$ ansible-playbook forks.yml --forks 5 serial...]$ ansible-doc -l | grep -e import -e include [greg@control ansible]$ ansible-doc import_playbook [greg...@control ansible]$ vim import.yml 1 - name: Include a play after another play 2 import_playbook
当我们需要部署数据库服务器和web服务器时,可以先执行db.yml文件,再执行web.yml文件。除此之外,Ansible还提供了一种便捷方式来处理这种情况。...例如,我们可以编写一个名为all.yml的Playbook,它的内容如下: --- - include: db.yml - include: web.yml include选项是Ansible提供的,用于在一个...ansible-playbook的执行方式如下: ansible-playbook first_playbook.yml ansible-playbook命令也有若干命令行选项,其中,有部分选项与ansible...如下所示: [root@python ~]# ansible-playbook all.yml --list-tasks playbook: all.yml play #1 (dbservers):...You should use 'import_playbook' instead. This feature will be removed in version 2.12.
/roles下 安装编译时所需要用到的依赖包 [root@ansible ~]# cd /etc/ansible/roles/ [root@ansible roles]# cat init_pkg.yml...-i hostlist nginx_roles.yml --limit 192.168.1.31 2)单独某一台机器安装php [root@ansible roles]# ansible-playbook...-i hostlist lnmp.yml --limit 192.168.1.31 5)所有机器部署php [root@ansible roles]# ansible-playbook php_roles.yml...6)所有机器部署nginx [root@ansible roles]# ansible-playbook nginx_roles.yml 7)所有机器部署mysql [root@ansible roles...]# ansible-playbook mysql_roles.yml 8)所有机器部署lnmp [root@ansible roles]# ansible-playbook lnmp.yml
--syntax-check timesync.yml ansible-playbook timesync.yml ansible all -m shell -a 'chronyc sources'...in groups["dev"] 4.检测语法,模拟执行测试,真实执行 ansible-playbook --syntax hosts.yml ansible-playbook -C hosts.yml...in groups["prod"] 2.检测语法,模拟执行,真实执行 ansible-playbook --syntax-check issue.yml ansible-playbook -C issue.yml...--syntax-check hwreport.yml ansible-playbook hwreport.yml 3.检测一下执行结果 [student@workstation ansible]$...home/student/ansible/locker.yml里的密码(上方题目已经创建过),创建一个名为/home/student/ansible/users.yml来保存这些账户: 2.1具有开发人员工作描述的用户应
中的分组信息 [web1] 192.168.1.2 [web2] 192.168.1.3 [root@ansible ~]# vim /etc/ansible/a.yml #创建a.yml...执行a.yml文件的示例如下: [root@ansible ~]# ansible-playbook --syntax-check /etc/ansible/a.yml #语法检测 playbook...: /etc/ansible/a.yml #表示没有报错 [root@ansible ~]# ansible-playbook -C /etc/ansible/a.yml #...[root@ansible ~]# ansible-playbook --list-hosts /etc/ansible/a.yml #列出a.yml文件中的主机 [root@ansible ~].../etc/ansible/a.yml #列出标签 [root@ansible ~]# ansible-playbook /etc/ansible/a.yml
- include: config.yml - include: service.yml #准备httpd.conf文件,放到httpd单独的文件目录下 cp /app/ansible...ansible-playbook role_httpd.yml 创建目录 [root@ansible ~]$ cd /etc/ansible/roles/ # 创建需要用到的目录 [root@ansible...yes # 编写main.yml,将上面的这些task引入进来 [root@ansible httpd]$ vim tasks/main.yml - include: group.yml - include.../main.yml [root@ansible httpd]$ vim handlers/main.yml # 这里的名字需要和task中的notify保持一致 - name: Restart Httpd...│ └── main.yml └── httpd_roles.yml 5 directories, 10 files 测试playbook语法是否正确 [root@ansible roles
ansible-playbook 命令可以作为运行一个 ansible 任务的开始,具体如何使用,可以查看帮助,下面这条是一般启动命令: ansible-playbook docker.yml -i hosts...│ │ ├── tasks <- ansible 任务文件 │ │ │ ├── config.yml │ │ │ ├──...main.yml │ │ │ ├── package.yml │ │ │ └── service.yml │ │ └── templates...│ │ │ ├── mlocate.yml │ │ │ ├── package.yml │ │ │ ├── sysctl.yml │ │ │ └── yumrepo.yml...│ │ └── t1.yml │ └── templates └── site.yml <- 主控制入口文件 ansible
命令: ansible-vault rekey foo.yml bar.yml baz.yml 如上命令可以同时批量修改多个文件的组织密码并重新设置新密码....该命令也可同时批量操作多个文件: ansible-vault encrypt foo.yml bar.yml baz.yml 解密已加密文件 如果不希望继续加密一个已经加密过的文件,通过 ansible-vault...命令将解密并保存到硬盘上,这样你不用再使用 ansible-vault edit 来编辑文件了: ansible-vault decrypt foo.yml bar.yml baz.yml 查阅已加密文件...Available since Ansible 1.8 如果你不希望通过编辑的方式来查看文件, ansible-vault view 可以满足你的需要: ansible-vault view foo.yml...交互式的指定 vault 的密码文件: ansible-playbook site.yml --ask-vault-pass 该提示被用来解密(仅在内存中)任何 vault 加密访问过的文件.
: start_rpcbind.yml 6 - include_tasks: start_NFS.yml 7 8 [yun@ansi-manager ansible_roles]$ cat roles.../hosts_key --syntax-check nfs_server.yml # 语法检测 2 [yun@ansi-manager ansible_roles]$ ansible-playbook.../hosts_key -C nfs_server.yml # 预执行,测试执行 3 [yun@ansi-manager ansible_roles]$ ansible-playbook -b -i ..../hosts_key -C memcached_server.yml # 预执行,测试执行 3 [yun@ansi-manager ansible_roles]$ ansible-playbook -.../hosts_key -C rsyncd_server.yml # 预执行,测试执行 3 [yun@ansi-manager ansible_roles]$ ansible-playbook -b -
此目录用来存储playbook变量,文件名为main.yml,其它文件需要通过include包含 实例-部署Nginx 目录结构 [root@ansible roles]# pwd /etc/ansible...vhost1.conf.j2 └── vars └── main.yml Vars [root@ansible nginx]# cat vars/main.yml yum_dir: /etc/...[root@ansible playbook]# pwd /opt/playbook [root@ansible playbook]# cat nginx.yml - hosts: all roles...: - nginx 开始部署 [root@ansible playbook]# ansible-playbook nginx.yml 调用角色的方法 方法1 - hosts: all roles...└── vars └── main.yml 指定模板的目录来创建角色 [student@workstation ansible]$ ansible-galaxy init --role-skeleton
领取专属 10元无门槛券
手把手带您无忧上云