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模块都可以(都实验成功)