Ansible-----常用功能
local_action
Ansible 默认只会对控制机器执行操作,但如果在这个过程中需要在 Ansible 本机执行操作就需要使用到local_action
become:True
Ansible允许你成为另一个用户,与登录到本机的用户或远程用户不同。
比如我们需要 root 权限,所以我们必须使用 become
语句。
serial
- name: test play hosts: webservers serial: 3
在上面的例子中,如果我们有100个主机,组“webservers”中的3个主机将完成playbook,然后再移动到接下来的3个主机。
还可以使用百分比
serial: "30%"
set_fact模块
set_fact模块可以自定义facts,这些自定义的facts可以通过template或者变量的方式在playbook中使用。如果你想要获取一个进程使用的内存的百分比,则必须通过set_fact来进行计算之后得出其值,并将其值在playbook中引用。
- name: Configure MySQL hosts: mysqlservers tasks: - name: install MySql yum: name=mysql-server state=installed - name: Calculate InnoDB buffer pool size set_fact: innodb_buffer_pool_size_mb="{{ ansible_memtotal_mb / 2 }}" - name: Configure MySQL template: src=templates/my.cnf dest=/etc/my.cnf owner=root group=root mode=0644 notify: restart mysql - name: Start MySQL service: name=mysqld state=started enabled=yes handlers: - name: restart mysql service: name=mysqld state=restarted my.cnf的配置示例: # ` ansible_managed ` [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Configure the buffer pool innodb_buffer_pool_size = {{ innodb_buffer_pool_size_mb|int }}M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
include_tasks模块
在ansible中,我们可以通过include,在一个playbook中包含另一个文件,以便实现代码的重复利用。
include_tasks模块用来包含一个任务列表
include_tasks本身会被当做一个task执行,这个task会把include的文件路径输出到控制台。
---当才华撑不起你的野心的时候,请努力!---