Tulisan ini merupakan lanjutan dari tulisan sebelumnya yang berjudul Csync-Server Setup yang bisa klik pada link berikut: CSync-Server. Pada tulisan ini kita akan membahas bagaimana caranya setup LSyncd sebagai automation CSync. Sebelum ke bagaimana caranya kalian harus tahu apa sih itu LSyncd?!. LSyncd merupakan sebuah tool untuk sinkronisasi data untuk local, remote dan ke server yang lain. Jadi kurang lebih sama dengan tool sinkronisasi yang lain. Tapi di tulisan ini kita tidak akan menggunakan LSyncd untuk sinkronisasi data tetapi kita akan mensetup LSyncd sebagai automation dari CSync. Jadi CSync sebagai tool untuk sinkronisasi data dan LSyncd sebagai automation nya supaya kita tidak menjalankan perintah CSync manual.
Oke Jika kalian sudah tahu kita langsung ke cara setup nya. Perlu di ingat sebelum kita menjadikan LSyncd ini menjadi automation ini kita sudah harus mensetup CSync server. Oke disini saya menggunakan 2 server yang sudah di setup CSync sebelumnya. 
Langkah pertama untuk melakukan setup LSyncd kita harus install package LSyncd tersebut menggunakan perintah:
 
# apt install lsyncd
# lsyncd --version
output:
Version: 2.2.3
Jika sudah kita akan melanjutkan ke bagian config file. Buat folder didalam folder /etc/ dengan nama lsyncd. Folder tersebut nanti nya akan kita buat menjadi tempat config file LSyncd kita. Selanjutnya buat file dengan nama lsyncd.conf.lua di dalam folder lsyncd tadi yang kita buat dan copy paste file config berikut:
 
settings {
        logident        = "lsyncd",
        logfacility     = "user",
        logfile         = "/var/log/lsyncd/lsyncd.log",
        statusFile      = "/var/log/lsyncd/status.log",
        statusInterval  = 1
}
initSync = {
        delay = 1,
        maxProcesses = 1,
        action = function(inlet)
                local config = inlet.getConfig()
                local elist = inlet.getEvents(function(event)
                        return event.etype ~= "Init"
                end)
                local directory = string.sub(config.source, 1, -2)
                local paths = elist.getPaths(function(etype, path)
                        return "t" .. config.syncid .. ":" .. directory .. path
                end)
                log("Normal", "Processing syncing list:n", table.concat(paths, "n"))
                spawn(elist, "/usr/sbin/csync2", "-C", config.syncid, "-x")
        end,
        collect = function(agent, exitcode)
                local config = agent.config
                if not agent.isList and agent.etype == "Init" then
                        if exitcode == 0 then
                                log("Normal", "Startup of '", config.syncid, "' instance finished.")
                        elseif config.exitcodes and config.exitcodes[exitcode] == "again" then
                                log("Normal", "Retrying startup of '", config.syncid, "' instance.")
                                return "again"
                        else
                                log("Error", "Failure on startup of '", config.syncid, "' instance.")
                                terminate(-1)
                        end
                        return
                end
                local rc = config.exitcodes and config.exitcodes[exitcode]
                if rc == "die" then
                        return rc
                end
                if agent.isList then
                        if rc == "again" then
                                log("Normal", "Retrying events list on exitcode = ", exitcode)
                        else
                                log("Normal", "Finished events list = ", exitcode)
                        end
                else
                        if rc == "again" then
                                log("Normal", "Retrying ", agent.etype, " on ", agent.sourcePath, " = ", exitcode)
                        else
                                log("Normal", "Finished ", agent.etype, " on ", agent.sourcePath, " = ", exitcode)
                        end
                end
                return rc
        end,
        init = function(event)
                local inlet = event.inlet;
                local config = inlet.getConfig();
                log("Normal", "Recursive startup sync: ", config.syncid, ":", config.source)
                spawn(event, "/usr/sbin/csync2", "-C", config.syncid, "-x")
        end,
        prepare = function(config)
                if not config.syncid then
                        error("Missing 'syncid' parameter.", 4)
                end
                local c = "csync2_" .. config.syncid .. ".cfg"
                local f, err = io.open("/etc/" .. c, "r")
                if not f then
                        error("Invalid 'syncid' parameter: " .. err, 4)
                end
                f:close()
        end
}
local sources = {
        ["/opt/testdir"] = "csync2"
}
for key, value in pairs(sources) do
        sync {initSync, source=key, syncid=value}
end
Pada config file tersebut ada beberapa yang harus di ubah. Yang pertama itu pada bagian local sources. Kalian ubah dengan path dari folder yang mau di sync dan ganti csync2 dengan alias dari file config tersebut. Lakukan hal yang sama di kedua server. 
 
Jika sudah kalian bisa save file tersebut dan jalankan perintah berikut untuk menjalankan service lsyncd
 
# systemctl start lsyncd.service
output:
● lsyncd.service - LSB: lsyncd daemon init script
Loaded: loaded (/etc/init.d/lsyncd; generated)
Active: active (running) since Thu 2024-05-30 02:09:42 UTC; 15min ago
Docs: man:systemd-sysv-generator(8)
Process: 7389 ExecStart=/etc/init.d/lsyncd start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 2177)
Memory: 612.0K
CPU: 32ms
CGroup: /system.slice/lsyncd.service
└─7395 /usr/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.lua

May 30 02:09:42 csync3 systemd[1]: Starting LSB: lsyncd daemon init script...
May 30 02:09:42 csync3 lsyncd[7389]: * Starting synchronization daemon lsyncd
May 30 02:09:42 csync3 lsyncd[7394]: 02:09:42 Normal: --- Startup, daemonizing ---
May 30 02:09:42 csync3 lsyncd[7389]: ...done.
May 30 02:09:42 csync3 systemd[1]: Started LSB: lsyncd daemon init script.
Jika sudah kita akan melakukan testing apakah berjalan atau tidak lsyncd kita. Kita akan membuat file dummy sebagai testing. Kalian bisa menggunakan perintah berikut:
 
# touch /opt/testdir/testing.txt
Jika sudah untuk memastikan kita akan membuka log dari service lsyncd dengan perintah berikut:
 
# tail -f /var/log/lsyncd/lsyncd.log

Maka kita akan bisa melihat bahwa lsyncd ini berjalan dengan baik dan sudah ke sync dengan benar.

 
Thu May 30 03:23:01 2024 Normal: Processing syncing list:
  csync2:/opt/testdir/.testing.txt.pZCAyj
  csync2:/opt/testdir/.testing.txt.pZCAyj
  csync2:/opt/testdir/.testing.txt.pZCAyj
  csync2:/opt/testdir/.testing.txt.pZCAyj
Thu May 30 03:23:01 2024 Normal: Finished events list = 0
Jadi seperti itu mudah bukan?!. Dengan LSyncd yang menajdi automation kita tidak perlu lagi jalankan perintah CSync dengan manual. Jadi seperti itu sampai jumpa di tulisan selanjutnya dan semoga bermanfaat bye bye.

Leave a Reply

Your email address will not be published. Required fields are marked *