Ansible-任务控制

Ansible-with_items 通过with_items进行循环 语法 {{ item }}: 为读取with_items的固定写法 with_items: 是一个列表,下面可以有多个不同的内容 - hosts: test remote_user: root gather_facts: false vars_files: ./public_vars.yaml tasks: - name: Services Http start service: name={{ item }} state=started with_items: - httpd - firewalld 普通写法 - hosts: test remote_user: root gather_facts: false vars_files: ./public_vars.yaml tasks: - name: Set authorized_key in dest hosts authorized_key: user: root key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" register: result_auth_info tags: authorized_key_hosts - name: Install httpd yum: name="httpd" state=present - name: Services Http start service: name={{ item }} state=started with_items: - httpd - firewalld 使用变量的循环写法 - hosts: test remote_user: root gather_facts: true tasks: - name: Install httpd yum: name={{ packages }} state=present vars: packages: - httpd - pcre-devel 使用变量字典循环方式批量创建用户 - hosts: test remote_user: root gather_facts: false vars_files: ./public_vars.yaml tasks: - name: Add Users user: name={{ item.name }} groups={{ item.groups }} state=present with_items: - { name: "alex",groups: "test"} - { name: "alex1",groups: "test"} 使用变量字典循环拷贝文件 - hosts: test remote_user: root gather_facts: false tasks: - name: Add Users copy: src: '{{ item.src }}' dest: '{{ item.dest }}' mode: '{{ item.mode }}' with_items: - { src: "./1.txt", dest: "/tmp", mode: 0644} - { src: "./2.txt", dest: "/tmp", mode: 0644} Ansible-Handlers 通过notify进行监控->通过handlers触发 关于Handler的一些小注意事项 ...

八月 29, 2022 · 3 分钟 · iren.

Ansible变量相关内容

Ansible怎么定义变量 通过playbook中的play进行变量的定义 通过inventory主机清单进行变量定义 通过执行playbook的时候增加-e选项进行定义 通过Playbook中的vars定义变量 在Playbook中通过写入vars语法定义变量 通过{{变量名}}进行引用! - hosts: test remote_user: root vars: - httpd_package: httpd tasks: - name: Install DepencyEnvorment yum: name: {{httpd_package}} state: present update_cache: yes 通过定义变量文件进行使用 定义一个名字为public_vars.yaml的变量配置文件 depence: ['openssl-devel','pcre-devel','zlib-devel'] 注意: 当你引用了变量文件中的变量,请在读取变量的时候增加双引号"" - hosts: test remote_user: root vars_files: - ./public_vars.yaml - ./public_vars2.yaml # 如果是多个变量的话 tasks: - name: "Install De" yum: name: "{{depence}}" # 通过双引号去引入变量内容,不然会报错 state: present update_cache: no 通过编辑inventory主机清单进定义 这种方法一般用的很少 [test] 10.1.6.205 [test:vars] file_name=group_sys 官方推荐的方法: 在项目目录中创建两个变量目录host_vars和group_vars ...

八月 15, 2022 · 1 分钟 · iren.

Playbook的一些简单使用

playbook是由一个或多个"play"组成的列表 playbook的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。 Task实际是调用ansible的一个module,将多个play组织在一个playbook中, 即可以让它们联合起来,按事先编排的机制执行预定义的动作 Playbook采用YAML语言编写 --- - hosts: test # 指定主机列表 remote_user: root # 远程操作以什么身份执行 tasks: - name: Install Redis # 提示字段,表示当前处于什么进度 command: install redis # 当前执行的具体命令操作 1.0 PlayBook核心元素 Hosts:playbook中的每一个play的目的都是为了让特定主机以某个指定的用户身份执行任务,hosts用于指定要执行指定任务的主机,须事先定义在主机清单中.详细请看 remote_user: 可用于Host和task中。也可以通过指定其通过sudo的方式在远程主机上执行任务,其可用于play全局或某任务.此外,甚至可以在sudo时使用sudo_user指定sudo时切换的用户. varniables: 内置变量或自定义变量在playbook中调用 Templates模板 : 可替换模板文件中的变量并实现一些简单逻辑的文件 Handlers和notify: 结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行 tags: 指定某条任务执行,用于选择运行playbook中的部分代码. ansible-playbook -C hello.yaml -C 选项检查剧本是否成功,并不实际执行 1.0.1 忽略错误信息 也可以使用ignore_errors来忽略错误信息 tasks: - name: run this shell: /usr/bin/ls || /bin/true ignore_errors: True 1.0.2 常用选项 --check: 只检测可能会发生的改变,但是不会执行 --list-hosts: 列出运行任务的主机 --limit: 主机列表,只针对主机列表中的主机执行 -v: 显示过程 --list-tasks: 查看任务列表 ansible-playbook hello.yaml --check ansible-playbook hello.yaml --list-hosts ansible-playbook hello.yaml --limit 10.1.6.111 2.0 Handlers和notify 由于playbook执行会有次序问题,所以当出现次序问题的时候,可以使用handlers结合notify ...

四月 1, 2022 · 4 分钟 · iren.