
= CaaS - OS Admin

== Playbook

[source,sh]
----
---
- hosts: service
  remote_user: docker
  gather_facts: no
  vars:
    user: "docker"
 
  tasks:

     # ------------------------
     # apt update
     # -------------------------
    - name: apt update packages
      become: true
      apt:
        update_cache: 'yes'
        force_apt_get: 'yes'
        upgrade: 'dist'
        cache_valid_time: 3600
        install_recommends: true
        autoremove: true

     # ------------------------
     # apt install packages
     # -------------------------
    - name: apt install packages
      become: true
      apt:
        update_cache: 'yes'
        force_apt_get: 'yes'
        install_recommends: true
        autoremove: true
        name: "{{ packages }}"
      vars:
        packages:
         - build-essential
         - git
         - flex
         - bison
         - traceroute
         - curl
         - lynx
         - ruby
         - ruby-dev

     # ------------------------
     # directory4example fluentd
     # -------------------------
    - name: make /var/log-in
      become: true
      file:
        path: "/var/log-in"
        state: directory
        owner: docker
        group: docker
        mode: '0777'

     # ------------------------
     # gem begin
     # -------------------------
    - name: make dir for gem
      become: true
      file:
        path: "/home/docker/.gem"
        state: directory
        owner: docker
        group: docker
        mode: '0755'

    - name: gem install  fluentd
      #become: true
      gem:
        name: fluentd
        version: 1.12.0
        state: present
      environment:
        CONFIGURE_OPTS: '--disable-install-doc'
        PATH: '/home/docker/.gem/ruby/2.5.0/bin:{{ ansible_env.PATH }}'

    - name: gem install fluent-plugin-mongo
      #become: true
      gem:
        name: fluent-plugin-mongo
        state: present

    - name: gem install oj
      #become: true
      gem:
        name: oj
        state: present

    - name: gem install json
      #become: true
      gem:
        name: json
        state: present

    - name: gem install async-http
      #become: true
      gem:
        name: async-http
        version: 0.54.0
        state: present

    - name: gem install ext-monitor
      #become: true
      gem:
        name: ext_monitor
        version: 0.1.2
        state: present

     # ------------------------
     # gem end
     # -------------------------

     # ------------------------
     # add group
     # -------------------------
#    - name: add group fluent
#      become: true
#      group:
#        name: fluent
#        state: present
#
     # ------------------------
     # add user
     # -------------------------
#    - name: add user gem 
#      become: true
#      user:
#        name: fluent
#        group: fluent

     # ------------------------
     # mkdir directory4 fluent
     # -------------------------
    - name: make dir fluentd
      become: true
      file:
        path: "/fluentd/etc"
        state: directory
        owner: docker
        group: docker
        mode: '0755'

    - name: make dir fluentd
      become: true
      file:
        path: "/fluentd/plugins"
        state: directory
        owner: docker
        group: docker
        mode: '0755'

     # ------------------------
     # cp fluentd.conf
     # -------------------------
    - name: cp fluentd.conf
      become: true
      copy:
        src: "./files/fluent.conf"
        dest: /fluentd/etc/fluent.conf
        owner: docker
        group: docker
        mode: 0755

     # ------------------------
     # start fluentd
     # -------------------------
    - name: start fluentd background
      shell: nohup /home/docker/.gem/ruby/2.5.0/bin/fluentd -c /fluentd/etc/fluent.conf -vv </dev/null >/dev/null 2>&1 &

     # ------------------------
     # example4net tcpdump example
     # -------------------------
#    - name: google.com
#      become: yes
#      become_user: "{{ user }}"
#      command:  curl http://www.google.com
#      ignore_errors: yes
#      register: configwww
#
#    - name: ls  configwww
#      debug: var=configwww.stdout_lines
#
#    - name: ls -al /var/lab/playground/playground-readmongo/
#      become: yes
#      become_user: "{{ user }}"
#      #command:  ls -al /var/lab/playground/playground-readmongo
#      command:  netstat -antlupe
#      ignore_errors: yes
#      register: config
#
#    - name: ls  config
#      debug: var=config.stdout_lines
#
#    - name: Refresh connection
#      meta: clear_host_errors
#
 
----



== Playbook files

=== fluentd conf file

[source,sh]
----
# config
<match debug.*>
  @type stdout
</match>

# input
<source>
  @type tail

  path /var/log/*.log
  path_key tailed_path

  tag stats.node

  # parse json
  <parse>
    @type json
  </parse>

  pos_file /tmp/fluentd--1605454018.pos
</source>


# input
<source>
  @type tail

  path /var/log-in/*/*
  path_key tailed_path

  tag log.node

  # parse none
  <parse>
    @type none
  </parse>

  pos_file /tmp/fluentd--1605454014.pos
</source>


# output http
<match log.*>
  @type copy
#  <store>
#          @type mongo_replset
#
#          database fluent
#          collection logs
#          nodes ondemand_mongo1:27017,ondemand_mongo2:27017,ondemand_mongo3:27017,ondemand_mongo4:27017,ondemand_mongo5:27017,ondemand_mongo6:27017,ondemand_mongo7:27017
#
#          user myusername
#          password mypassword
#
#          replica_set rs1
#          num_retries 60
#          capped
#          capped_size 100m
#
#
#          <buffer>
#            flush_interval 20s
#          </buffer>
#  </store>
  <store>
        @type stdout
  </store>

  <store>
	  @type file
	  path /tmp/mylog
	  <buffer>
	    timekey 1d
	    timekey_use_utc true
	    timekey_wait 10s
	  </buffer>
  </store>


</match>

<match stats.*>
  @type copy
  <store>
       @type stdout
  </store>
</match>

