ansible的自动化管理

ansibel学习总结

基本语法

列表和字典层级要分明,冒号后面加空格,如下面的例子,刚开始学习的时候,冒号后面没有加空格,导致失败。

- hosts: httpd
  remote_user: root
  tasks:
    - name: install httpd
      yum: name=httpd state=present
    - name: start httpd service
      service: name=httpd state=started

  

ansible的列表和字典

列表:每一个列表成员前面都要有一个短横线和一个空格

fruits:
    - Apple
    - Orange
    - Strawberry
    - Mango

或者:
fruits: ['Apple', 'Orange', 'Strawberry', 'Mango']

  

字典:每一个成员由键值对组成,注意冒号后面要有空格

martin:
    name: Martin D'vloper
    job: Developer
    skill: Elite
或者
martin: {name: Martin D'vloper, job: Developer, skill: Elite}

 实验生成密钥

[root@localhost ~]# ssh-keygen -t rsa       <== 建立密钥对,-t代表类型,有RSA和DSA两种
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   <==密钥文件默认存放位置,按Enter即可
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):     <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again:     <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa.    <== 生成的私钥
Your public key has been saved in /root/.ssh/id_rsa.pub.    <== 生成的公钥
The key fingerprint is:
SHA256:K1qy928tkk1FUuzQtlZK+poeS67vIgPvHw9lQ+KNuZ4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|           +.    |
|          o * .  |
|        . .O +   |
|       . *. *    |
|        S =+     |
|    .    =...    |
|    .oo =+o+     |
|     ==o+B*o.    |
|    oo.=EXO.     |
+----[SHA256]-----+
--------------------- 
传输公钥:
传输公钥时ip地址后面不见任何东西,默认会在/root下生成.shh,并把公钥传在他的下面

[root@localhost ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.8.11

  

yum模块的学习

参数名	          是否必须   默认值	 选项值	               参数说明
conf_file	    不			                       设定远程yum执行时所依赖的yum配置文件
disable_gpg_check   不	    No	         Yes/No	               在安装包前检查包,只会影响state参数为present或者latest的时候
list	            No			                       只能由ansible调用,不支持playbook,这个干啥的大家都懂
name	           Yes			                       你需要安装的包的名字,也能如此使用name=python=2.7安装python2.7
state	           no	   present	present/latest/absent  用于描述安装包最终状态,present/latest用于安装包,absent用于remove安装包
update_cache	   no	   no	        yes/no	               用于安装包前执行更新list,只会影响state参数为present/latest的时候

  

service模块的学习

名称	      必选	    默认值	  可选值	                             备注
argument       no			                                     如果打开这个标记,backrefs会改变模块的一些操作:insertbefore和insertafter参数会被忽略。当regexp不匹配文件中的任何行时,文件不会做任何修改,否则 使用扩展的line参数 替换 最后一个匹配正则表达式的行
enabled        no	    yes/no	                                     服务是否开机自动启动。enabled和state至少要有一个被定义
name	       yes			                                     服务名称
pattern        no			                                     如果服务没有响应,则ps查看是否具有指定参数的进程,有则认为服务已经启动
sleep	       no	    EOF	         EOF/*regex*	                     如果服务被重新启动,则睡眠多少秒再执行停止和启动命令
state	       no		         started,stopped,restarted,reloaded   service最终操作后的状态

  

 举例,远程在centos6.5系统上安装mysql

- hosts: mysqld
  remote_user: root
  tasks:
    - name: install mysqld
      yum: name=mysql state=present
    - name: install mysql-devel
      yum: name=mysql-devel state=present
    - name: install mysql-server
      yum: name=mysql-server state=present
    - name: start mysqld service
      service: name=mysqld state=started

  

远程在centos7上部署mariadb

- hosts: mariadb
  remote_user: root
  tasks:
    - name: install mariadb
      yum: name=mariadb-server state=present
    - name: start mariadb service
      service: name=mariadb state=started

-------------------------------------------------------

- hosts: mariadb
remote_user: root
tasks:
- name: install mariadb
yum: name=mariadb-server state=present
- name: start mariadb service
systemd: name=mariadb state=started

用systemd或者service模块都可以(都实验成功)

  

原文地址:https://www.cnblogs.com/zhuhaofeng/p/10006399.html