
网址:dsesh.com
邮 箱:78749297@qq.com
Ansible Playbook 示例:main_Ansible(图片来源网络,侵删)
1.

本文档提供了一个名为main_Ansible 的 Ansible Playbook 示例,该 Playbook 主要用于在目标主机上部署 Web 应(ying)用。

2. 目录结构

main_Ansible/├── playbook.yml├── roles/│ ├── common/│ │ ├── tasks/│ │ │ └── main.yml│ │ └── vars/│ │ └── main.yml│ └── webapp/│ ├── tasks/│ │ ├── install_dependencies.yml│ │ ├── setup_webapp.yml│ │ └── start_webapp.yml│ └── vars/│ └── main.yml└── hosts.ini
3. 主要组件
3.1 playbook.yml
这(zhe)是主 Playbook,它定义了要运行的任务(wu)和角色,在这个例子中(zhong),我们使(shi)用(yong)了两(liang)个角色:common 和(he)webapp。
name: Deploy Web Application hosts: webservers roles: common webapp
3.2 roles/common/tasks/main.yml
(图(tu)片(pian)来源网络,侵删)这个角色包含了一些通用任务,如安装 Python、更新软件包等,这些(xie)任务将在所有其他角色之前运行。
name: Install Python and Update Packages apt: update_cache: yes upgrade: yes cache_valid_time: 3600
这个角色包含了一些(xie)变量,用于(yu)配置通用任务,可以在这(zhe)里设置软件包源。
source_list: "deb http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse"name: Install Nginx and Gunicorn Dependencies apt: name: ["nginx", "gunicorn"] state: present3.5 roles/webapp/tasks/setup_webapp.yml
这(zhe)个角色包含了(le)设置 Web 应用的任务,在这个(ge)例子中,我们将创建一个新的 Nginx 配置文件并重启 Nginx。
(图片来源网络,侵删)name: Create Nginx Configuration for Web App template: src=nginx_config.j2 dest=/etc/nginx/sitesavailable/webapp.conf mode=0644 owner=root group=root validate=nofollowsymlinks create=yes force=yes backup=yes enable=yes state=directory recurse=yes use_module=default force=yes allow_world_readable=no force=yes allow_world_writeable=no force=yes allow_anon_write=no force=yes anon_owner=root anon_group=root anon_mode=0644 anon_umask=0000 anon_rw_device=null anon_create_device=null anon_dir_owner=root anon_dir_group=root anon_dir_mode=0755 anon_dir_umask=0000 anon_symlink_expiration=0 anon_mkdir_p_privileges=0 anon_mknod_mode=0600 anon_fcronjob_user=root anon_fcronjob_group=root anon_max_requests=1024 anon_max_instances=512 anon_keepalive_timeout=5 anon_keepalive_requests=10 anon_http_timeout=300 anon_tcp_nodelay=yes anon_client_body_timeout=300 anon_client_header_timeout=15 anon_sendfile=yes anon_tcp_nopush=yes anon_fastcgi_connect_timeout=300 anon_fastcgi_read_timeout=300 anon_fastcgi_send_timeout=300 anon_fastcgi_buffers=8 anon_fastcgi_buffer_size=1k anon_fastcgi_busy_buffers_size=1k anon_fastcgi_temp_file_write_size=1k anon_fastcgi_next_upstream_timeout=1k anon
下面是一个简化的介绍,用于描述一个名为main_Ansible 的Ansible playbook的结构,这个介绍将列(lie)出playbook中可能包含的关键元素,如任务、角色、变(bian)量(liang)等。
| 元素 | 描述 | 示例 |
| Play名称 | playbook的(de)主要任务组名(ming)称 | main_Ansible |
目标主机 | 要应用play的主机或(huo)主机组 | all 或webservers |
连接类型 | 与目标主机连接的方法 | local,ssh,winrm |
| 用户 | 连接到目标主机的(de)用户 | ansible 或root |
| 任务的列表 | 在目标主机上执行(xing)的具体操作 | |
任务名称 | 任务的描述性(xing)名称 | Install Nginx |
| 模块名称 | Ansible要使用的模块 | package,file,service |
| 模块参数 | 传(chuan)递给模块的参数 | name=nginx state=latest |
| 角色列(lie)表 | playbook中使用的角色名称 | geerlingguy.nginx |
| 变量 | 用于配置和个性化任务和角色的变量 | http_port: 80 |
| 条件als | 控制任务(wu)是否运行的判断语句 | when: ansible_os_family == "RedHat" |
| 迭代 | 对一组数据(ju)进(jin)行迭代(dai) | with_items: "{ { packages }}" |
处理(li)器 | 在特定事件发生时触发的任务 | notify: restart nginx |
| handlers名称 | 处理器的描述性名称 | Restart Nginx |
| handlers模块 | 在处理器中(zhong)使用的模块 | service |
| handlers模块参数(shu) | 传递给处理器模块的参数 | name=nginx state=restarted |
下面是一个(ge)具体的示例:
| Play名称 | main_Ansible |
| 目标主机 | webservers |
| 连接类型 | ssh |
| 用户 | ansible |
| 任务的列表 | |
| 任务名称 | Install Nginx |
| 模块名称 | package |
| 模块参(can)数 | name=nginx state=latest |
| 任务名称 | Configure Nginx |
| 模块名称 | template |
| 模块参数 | src=nginx.conf.j2 dest=/etc/nginx/nginx.conf |
| 角色列表 | geerlingguy.nginx |
| 变量 | http_port: 80 |
| 条件als | when: ansible_os_family == "Debian" |
| 处理器 | notify: restart nginx |
| handlers名称 | Restart Nginx |
| handlers模块 | service |
| handlers模块参数 | name=nginx state=restarted |
请注意,这只是一个示例,实(shi)际的playbook可能会根据您的需求包含更多的元素和更复杂的结构。