操作步骤 1、 创建hosts文件:具体内容是被管理的主机地址,实例如下: [YUM]172.16.7.1 ANSIBLE_SSH_PASS="234"[K8SMASTER] 172.16.7.2 ANSIBLE_SSH_PASS="1234" [NGINX] 172.16.7.1 ANSIBLE_SSH_PASS="1234" 172.16.7.2 ANSIBLE_SSH_PASS="1234" 其中,[YUM]表示组名, hosts文件主要是对被管理主机进行分组管理。 - HOSTS: ALL ROLES: - COMMON #创建私有YUM源 - HOSTS: YUM ROLES: - YUMRESOURCE 其中,HOSTS参数指明需进行操作的主机分组,ROLES指明需使用哪个规则来对该类主机进行操作。
HTTPD_PORT: 80 NTPSERVER: 192.168.1.2 #MYSQL MYSQLSERVICE: MYSQLD MYSQL_PORT: 3306 DBUSER: ROOT UPASSWORD: ROOT 4、 创建rloes文件夹,再创建每一个具体的role文件夹,一般一些公共的操作,会放到以common命名的rrole中,每一个role文件夹中至少要有一个tasks文件夹,里面至少要有一个man.yaml文件,里面是一些要进行的task。实例如下: #关闭防火墙等设置#关闭并禁止防火墙开机自启 - NAME: DISABLED FIREWALL SERVICE: NAME=FIREWALLD STATE=STOPPED ENABLED=NO TAGS: FIREWALLD #关闭LINUX自带防火墙 - NAME: CLOSE SELINUX SHELL: SETENFORCE 0 #关闭LINUX自带防火墙 - NAME: CLOSE SELINUX IN CONFIGUR FILES COPY: SRC=SELINUX DEST=/ETC/SYSCONFIG/SELINUX 5、 将创建的文件夹上传到控制主机中,切换到对应的文件目录,执行启动文件,命令: ansible-playbook -i hosts site.yml
rloes详解 一般一个典型的role文件夹,会有: 遇到过的一些问题 1、 ansible本身有很多变量可以供我们使用,但这些变量是比较难掌握的;有些时候你不知道它是从哪里来的;有些时候,可能不知道为什么有些变量可以在playbook中使用,却不能再site文件的规则中使用;有些时候,可能不知道使用环境是什么样的 2、 Jinja2模块的语法和ansible是不同的,二者不可以混用; 3、 copy和template模块不可混用,二者虽然都有copy文件的功能,但本质上是不同的,copy是拷贝file下的文件,template是拷贝templates下的模板文件; 4、 使用条件判断when的时候,不能是带有{{}}格式的变量,如果是这种情况,就需将非系统变量做一个显性的定义,例如: - NAME: WRITE MYID FILE SHELL: ECHO “{{ITEM.0+1}}” > /ROOT/ZOOKEEPER-3.4.6/DATA/MYID WITH_INDEXED_ITEMS: “{{GROUPS.ZOOKEEPER}}” VARS: PARAM: “{{ITEM.1}}” WHEN: ANSIBLE_DEFAULT_IPV4.ADDRESS==PARAM 其中, when: ansible_default_ipv4.address==param就不能直接写成 when: ansible_default_ipv4.address=={{item.1}} |
错误信息