查看“Playbook”的源代码
←
Playbook
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
=简单例子= 在线playbook分享平台:https://galaxy.ansible.com <pre> ansible tree ansible-nginx ansible-nginx ├── files │ └── nginx.conf.j2 └── playbook.yml 1 directory, 2 files ➜ ansible-nginx cat files/nginx.conf.j2 server { listen 80; root /tmp/; index index.html index.htm; server_name a.com; location / { default_type "text/html"; try_files $uri.html $uri $uri/ =404; } } ➜ ansible-nginx cat playbook.yml --- - hosts: d11 name: playbook demo become: yes gather_facts: false remote_user: root become_user: root tasks: - name: Update apt cache and install Nginx apt: name: nginx state: latest update_cache: yes - name: Apply Nginx template template: src: files/nginx.conf.j2 dest: /etc/nginx/sites-available/default notify: Restart Nginx - name: Enable new site file: src: /etc/nginx/sites-available/default dest: /etc/nginx/sites-enabled/default state: link notify: Restart Nginx - name: Allow all access to tcp port 80 ufw: rule: allow port: '80' proto: tcp handlers: - name: Restart Nginx service: name: nginx state: restarted ansible-playbook -C playbook.yml ansible-playbook playbook.yml </pre> =galaxy.ansible= 找几个例子看看 https://galaxy.ansible.com/andrewrothstein/java-oracle-jdk https://galaxy.ansible.com/sansible/golang =基本语法= == 3.4.4 条件语句== <pre> #如果是debian类,关机 playbooks cat when.yml --- - name: shtudown hosts: pi3 tasks: - name: shutdown if debian command: /sbin/shutdown -t now when: ansible_os_family =="Debian" #更加好的例子 --- - name: Install vim hosts: all tasks: - name:Install VIM via yum yum: name: vim-enhanced state: installed when: ansible_os_family =="RedHat" - name:Install VIM via apt apt: name: vim state: installed when: ansible_os_family =="Debian" - name: Unexpected OS family debug: msg="OS Family {{ ansible_os_family }} is not supported" fail=yes when: not ansible_os_family =="RedHat" or ansible_os_family =="Debian" </pre> [https://www.cnblogs.com/breezey/p/10996632.html Ansible14:Playbook条件语句] == 3.4.5循环控制== <pre> 一般书上都是用with_item cat loop-user2.yml --- - name: create user hosts: pi3 tasks: - name: create user user: name: "{{ item }}" state: present with_items: - user04 - user05 - user06 - name: set password shell: echo 'e12345678' | passwd --stdin "{{ item }}" with_items: - user04 - user05 - user06 ➜ ansible cat loop-user.yml --- - name: create user hosts: pi3 tasks: - name: create user user: name: "{{ item }}" state: present loop: - user01 - user02 - user03 - name: set password shell: echo 'e12345678' | passwd --stdin "{{ item }}" loop: - user01 - user02 - user03 ansible-playbook -C loop-user.yml ansible-playbook loop-user.yml 执行后查看结果 root@mypi3b:~# cat /etc/passwd | grep user root@mypi3b:~# root@mypi3b:~# cat /etc/passwd | grep user user01:x:1003:1004::/home/user01:/bin/sh user02:x:1004:1005::/home/user02:/bin/sh user03:x:1005:1006::/home/user03:/bin/sh root@mypi3b:~# su - user01 $ hostname mypi3b $ id uid=1003(user01) gid=1004(user01) groups=1004(user01) </pre> ==3.4.6 include语法 == <pre> playbook中代码复用非常爽,eg task --- - tasks: - include: a.yml user=root - include: b.yml user=root - include: c.yml user=root 或者是下面的多个项目用一个脚本的例子 ➜ playbooks cat restart_ng.yml - name: Restart ng Server service: name: nginx state: restarted ➜ playbooks cat a.yml - hosts: pi3 tasks: - name: A Project command command: echo "A" - name: Restart ng include: restart_ng.yml ➜ playbooks cat b.yml - hosts: mytmp tasks: - name: A Project command command: echo "A" - name: Restart ng include: restart_ng.yml ansible-playbook a.yml ansible-playbook b.yml 成功执行后 查看结果 nsible pi3 -m shell -a "systemctl status nginx" 192.168.10.5 | CHANGED | rc=0 >> ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-08-24 12:59:57 CST; 3min ago </pre> ==Inlcude结合tags应用 == <pre> ”include”不仅能够引用任务列表,还能够引用playbook,比如,在一个playbook中引用另一个playbook。 示例:通过指定标签 tags ,来说明是安装 tomcat8 还是 tomcat9 1.准备入口 main.yml 文件,然后包含 install_tomcat8.yml 以及install_tomcat9.yml 2.在执行 main.yml 时,需要通过 --tags 指明要安装的版本 3.还可以在主playbook文件中向引用的playbook传递变量。 编写main.yml入口文件: # cat tomcat_main.yml - name: Install Tomcat8 import_playbook: install_tomcat8.yml tags: tomcat8 vars: tomcat_version: 8.5.69 tomcat_install_path: /usr/local - name: Install Tomcat9 import_playbook: install_tomcat9.yml tags: tomcat9 vars: tomcat_version: 9.0.50 tomcat_install_path: /usr/local 编写install_tomcat8.yml文件 cat install_tomcat8.yml --- - hosts: localhost tasks: - name: Install JDK yum: name: java-1.8.0-openjdk state: present - name: Download Tomacat get_url: url: https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v{{ tomcat_version }}/bin/apache-tomcat-{{ tomcat_version }}.tar.gz dest: /root - name: Unarchive Tomcat unarchive: src: /root/apache-tomcat-{{ tomcat_version }}.tar.gz dest: "{{ tomcat_install_path }}" - name: Create Link File file: src: "{{ tomcat_install_path }}/apache-tomcat-{{ tomcat_version }}" dest: "{{ tomcat_install_path }}/tomcat8" state: link - name: Start Tomcat shell: cd "{{ tomcat_install_path }}"/tomcat8/bin && nohup ./startup.sh & 编写install_tomcat9.yml文件: cat install_tomcat9.yml --- - hosts: localhost tasks: - name: Install JDK yum: name: java-1.8.0-openjdk state: present - name: Download Tomacat get_url: url: https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v{{ tomcat_version }}/bin/apache-tomcat-{{ tomcat_version }}.tar.gz dest: /root - name: Unarchive Tomcat unarchive: src: /root/apache-tomcat-{{ tomcat_version }}.tar.gz dest: "{{ tomcat_install_path }}" - name: Create Link File file: src: "{{ tomcat_install_path }}/apache-tomcat-{{ tomcat_version }}" dest: "{{ tomcat_install_path }}/tomcat9" state: link - name: Start Tomcat shell: cd "{{ tomcat_install_path }}"/tomcat9/bin && nohup ./startup.sh & #安装tomcat9 [root@xuzhichao playbook]# ansible-playbook -t tomcat9 tomcat_main.yml #安装tomcat8 [root@xuzhichao playbook]# ansible-playbook -t tomcat8 tomcat_main.yml </pre> https://blog.51cto.com/u_15127516/3557509 =refer= https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_roles.html#dynamic-versus-static-includes [https://blog.51cto.com/u_13630803/2154192 Ansible之Playbook详解、案例] [https://www.jianshu.com/p/c41427cf5264 通过ansible安装中间件(jdk,nginx,mysql,etcd集群)] [https://juejin.cn/post/6844903631066513421 (playbook ins zbx还不错) ansible自动化运维详细教程及playbook详解 ] [https://blog.devgenius.io/how-to-install-nginx-using-ansible-playbook-48e2aa74f944?gi=19b433cc3a8d How to Install Nginx using Ansible Playbook] [https://www.cnblogs.com/vincenshen/p/12587749.html Ansible Loop循环控制] 官网参考文档: loops: https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html filters: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html [[category:devops]][[category:ansible]]
返回至
Playbook
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
我的导航
关于我
shell
python
ops
linuxchina.net
blog.linuxchina
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息