Cihaz Ajanı Komutları
ironflock agent komutları bir Linux makinesini IronFlock’a cihaz olarak bağlar ve o andan itibaren cihaz ajanıyla ilgilenir. Bu komutlarla ajanı kurar, ona başka bir cihaz yapılandırması veya proxy verir, ajanı günceller, durdurur ve başlatır, günlüğünü okur ve ajanı yeniden kaldırırsınız.
Cihaz Ajanı
Cihaz ajanı, bir makineyi IronFlock’a cihaz olarak bağlayan ve cihazın projesindeki uygulamaları Docker’da çalıştıran programdır. Bir makinenin hangi cihaz olacağını, IronFlock Studio’nun her cihaz için verdiği cihaz yapılandırma dosyası (.flock) belirler (Cihaz Bağlama).
| Komut | Ne yapar | Sorar mı |
|---|---|---|
agent install | ajanı kurar ve makineyi bir .flock dosyasının cihazı olarak IronFlock’a bağlar | evet |
agent configure | kurulu ajana başka bir .flock dosyası veya başka proxy ayarları verir | Docker yeniden başlamadan önce |
agent update | ajanın kendini kanalındaki sürüme güncellemesini sağlar ve bunu izler | yeniden başlatmadan önce |
agent remove | ajanı kaldırır ve kurulumunun değiştirdiklerini geri alır | evet, “No” önceden seçili |
agent restart | ajanı yeniden başlatır ve tekrar çalıştığını denetler | hayır |
agent stop | ajanı tekrar başlatılana kadar durdurur | evet |
agent start | ajanı başlatır ve çalıştığını denetler | hayır |
agent logs | ajanın günlüğünü gösterir | hayır |
Her ajan komutu root gerektirir ve Linux’ta çalışır. Root olmadan çıkış kodu 3 ile sona erer ve sudo komutunu kendisi çağırmaz (Root Yetkileri). macOS’ta ajan komutları hiçbir şeye bakmadan çıkış kodu 3 ile sona erer; bunları Linux makinesinde ya da Mac’ten --host ile çalıştırın. Bir IronFlockOS cihazında görüntü, ajanı sistemiyle birlikte getirir: agent install ve agent remove orada reddeder, agent configure -c ise cihazı başka bir .flock dosyasıyla kaydeder.
Her komut ayrıca --yes, --json, --download-base, --host, --hosts ve --parallel genel bayraklarını kabul eder (Genel Bayraklar). Bir soru terminal gerektirir; terminal yoksa --yes verin (Sorular ve Onay).
--host ile bir komut SSH üzerinden başka bir makinede çalışır (SSH Üzerinden Uzak Makineler). Aynı anda birkaç makinede (birden fazla kez verilen --host ya da --hosts ile) agent restart, agent start ve agent logs olduğu gibi çalışır, ancak agent logs --follow komutu --json ile çalışmaz. Orada kimseye soru sorulmadığı için agent stop, agent update, agent configure ve agent remove komutları --yes gerektirir; bir .flock dosyası tek bir cihazı belirttiği için de agent configure orada -c almaz. agent install bir seferde tek bir makinede çalışır.
Kurulu Bir Ajanın Görünümü
| Yol veya birim | Nedir |
|---|---|
/opt/ironflock/device-agent | ajanın klasörü: ajan, .flock dosyasının kopyası (device-config.flock) ve son kendi kendini güncellemesinin durumu (update-state.json). Docker’ı kurulum getirdiyse ya da Docker henüz hiçbir şey tutmuyorsa Docker görüntülerini ve konteynerlerini de burada tutar |
ironflock-device-agent.service | ajanı çalıştıran systemd hizmeti. Her açılışta başlar |
/var/log/ironflock/device-agent.log | ajanın günlüğü; yalnızca root okuyabilir. agent logs onu gösterir |
/opt/ironflock/device-init/installed.json | kurulumun değiştirdiği her şeyin kaydı. agent remove tam olarak bunu geri alır |
/etc/ironflock/proxy.env | proxy varsa Docker’ın ve ajanın proxy ayarları. Yalnızca root okuyabilir (mod 0600) |
Ajan ayrıca her başlatılışında makinenin birkaç ayarını kendisi yazar: içinde çalıştığı ve onun için bellek ayıran ironflock.slice birimi, systemd watchdog ayarı, çekirdeğin çökme ayarları ve journal boyutu için bir üst sınır.
Daha önceki bir IronFlock yükleyicisinin kurduğu bir makinede ajan hâlâ eski /opt/reagent düzeninde olabilir (hizmet reagent.service, günlük /var/log/reagent.log); ajan bu düzeni kendiliğinden /opt/ironflock/device-agent klasörüne taşır. Bir makinenin hangi düzene sahip olduğunu ironflock status gösterir; aşağıdaki ret durumları bunun önemli olduğu yerleri belirtir.
ironflock agent install
Cihaz ajanını /opt/ironflock/device-agent klasörüne, eksikse Docker’ı ve bir cihazın makine varsayılanlarını kurar ve makineyi .flock dosyasının cihazı olarak IronFlock’a bağlar. Ajan hemen başlar ve o andan itibaren kendini günceller.
ironflock agent install -c <device.flock> [flags]Çalıştığı sistemler: systemd kullanan, Debian veya Ubuntu tabanlı Linux; IronFlockOS’ta çalışmaz. Root: gerekir. Sorular: paketleri ve Docker’ı kurmadan önce ve her makine varsayılanı için; --yes her soruyu varsayılanıyla yanıtlar.
Makinenin internete, --download-base ile verilen indirme sunucusuna (İndirme Tabanı) ya da .flock dosyasının belirttiği Appliance’ın indirme yansısına (Ajan Nereden Gelir) erişmesi gerekir. Bir cihazın erişmesi gereken ana bilgisayarlar Ağ Gereksinimleri sayfasında listelenir.
| Bayrak | Anlamı |
|---|---|
-c, --config <file> | cihazın .flock dosyası (zorunlu) |
--disable-suspend | systemd uyku hedeflerini maskeler: uyku moduna geçen bir cihaz ağdan düşer |
--reboot | kurulum bitince yeniden başlatır (gerekli değildir: ajan hemen başlar) |
--http-proxy <url> | indirmeler, Docker ve ajan için kurumsal HTTP proxy’si; örneğin http://proxy:3128 ya da parola olmadan http://user@proxy:3128 |
--https-proxy <url> | indirmeler, Docker ve ajan için aynı biçimde kurumsal HTTPS proxy’si |
--no-proxy <hosts> | proxy’yi atlayan, virgülle ayrılmış ana bilgisayarlar; localhost her zaman eklenir |
--proxy-password-file <file> | tek satırı --http-proxy ve --https-proxy bayraklarının belirttiği kullanıcının parolası olan bir dosya veya pipe (/dev/stdin) |
Ajan Nereden Gelir
Ajan; kanal haritası, ikili dosyası ve bu ikili dosyanın .sha256 ve .sig dosyalarından oluşur. Komut bunları şuradan alır:
--download-base, yoksaIRONFLOCK_DL_BASE: yalnızca o sunucu.- Yoksa
.flockdosyasının güncelleme sunucusu (update_url) olarak belirttiği IronFlock Appliance’ın indirme yansısı; ana bilgisayarı IronFlock bulutuna ait değilse. Appliance’a erişen ama ironflock.com’a erişemeyen bir makine bu yolla kurulur. IronFlock bulutuna ait bir.flockdosyası bulutu kullanır. - Yoksa IronFlock bulutu,
https://instance-registry.ironflock.com/dl.
Komut tabanı stderr’de belirtir: Download base: ... (from the device's .flock), ya da (from --download-base), (from IRONFLOCK_DL_BASE) veya (from default).
Appliance’ın yansısıyla dosyalar önce yansıdan gelir; yansının vermedikleri ise IronFlock bulutunun indirme tabanının altındaki aynı yoldan gelir:
- Kanal haritası — yansı şu anda harita vermiyorsa (yanıt yok, harita yok, bir hata durumu), her şey buluttan gelir ve sürüm, bulutun haritasının belirttiği sürümdür. Yansının verdiği ama reddedilen bir harita (imzası nedeniyle, sürüm içermediği için) kurulumu, herhangi bir sunucuda olduğu gibi başarısız kılar.
- İkili dosya,
.sha256ve.sigdosyası — yansının vermediği her biri buluttan gelir. Yansının dosyaları denetimlerden (sağlama toplamı, imza) geçmezse üçü de buluttan gelir.
Her geri dönüş, stderr’de yansıyı, dosyayı ve nedeni belirten bir Warning: ... satırıdır; --json ile de sonuçtaki warnings alanında bir girdidir. Bir dosyayı ne yansı ne de bulut verirse kurulum, iki kaynağı ve iki nedeni belirten tek bir hatayla başarısız olur (neither the appliance's mirror ... nor the IronFlock cloud gives ...).
Yansı, .flock dosyasının güncelleme sunucusudur ve proxy’yi atlar (Proxy). Appliance’ın kendi CA’sından sertifikası olan bir HTTPS yansısı yalnızca makinenin sistemi o CA’ya güveniyorsa çalışır. Dağıtımın paketleri ve Docker yine kendi sunucularından, install.sh ve ironflock ise ironflock.com’dan gelir; --host ile ironflock sizin bilgisayarınızdan makineye gider.
Kurulumdan Önceki Denetimler
Komut, herhangi bir şeyi değiştirmeden önce ironflock doctor denetimlerinden kurulumun başarılı olup olamayacağını gösterenleri çalıştırır: system, systemd, disk_space, clock, dns, proxy, download_tree, device_endpoint, docker_registry ve update_server. Bunlar -c ile verilen .flock dosyası için, kurulumun indirme tabanı ve proxy bayraklarıyla çalışır.
Bunlardan dördü başarısız olduğunda kurulumu durdurur, çünkü kurulum bu durumda kesinlikle ya da yarı yolda başarısız olurdu:
| Denetim | Başarısız olduğu durum | Kurulumun neden durduğu |
|---|---|---|
system | makine Linux değil ya da apt yok | ilk adım olan apt başarısız olurdu |
systemd | sistemi systemd çalıştırmıyor | kurulum, ilk değişikliklerini kaydettikten sonra Docker’ı yeniden başlatır ve ajanı systemctl ile başlatır |
disk_space | /opt içindeki boş alan 128 MiB’ın altında | yaklaşık 50 MB olan ajan ikili dosyasının, kurulum sürerken iki kez sığması gerekir |
download_tree | indirme sunucusu yanıt vermiyor, bu mimari için ajanı yok ya da kurulumun kabul etmediği bir yanıt veriyor; Appliance’ın yansısıyla ajan ne yansıda ne de bulutta var | kurulum apt ve Docker’dan sonra, üçüncü adımında başarısız olurdu |
Mesaj denetimi, bulgusunu ve ipucunu belirtir. Diğer her bulgu stderr’de bir uyarıdır ve kurulum devam eder: ağ izin verdiğinde ajan bağlanır, güncellenir ve uygulamalarını çeker. warning veya skipped sonucu kurulumu asla durdurmaz. Kurmadan önce her denetimi görmek için ironflock doctor -c device.flock çalıştırın.
Adımlar
- Kuracağı paketleri belirtir ve sorar. Bunları
aptile kurar. - Makinede Docker yoksa önce sorar, sonra Docker’ı kurar.
- Üretim kanalının ajanını indirir ve sağlama toplamına ve imzasına göre doğrular. Doğrulanmış bir ajan alamayan bir kurulum, sonraki adımların hiçbirine geçmeden burada durur.
- Docker’ı yapılandırır: verildiyse proxy’yi ve bu kurulumun getirdiği ya da henüz hiçbir şey tutmayan bir Docker için ajanın klasöründeki data-root’u. Görüntü veya konteyner tutan bir Docker yapılandırmasını ve verilerini korur.
- Makine varsayılanlarını ayarlar (aşağıdaki tablo). Her biri terminalde bir seçimdir;
--yesvarsayılanı alır. - Ajanı
/opt/ironflock/device-agentklasörüne kurar ve başlatır.
| Makine varsayılanı | Varsayılan |
|---|---|
| proje sahibi için bir SSH kullanıcısı: yalnızca anahtarla oturum açma, sudo ile | evet |
varsa .flock dosyasındaki WiFi | evet |
| uyku modu yok: systemd uyku hedefleri maskelenir | hayır; --disable-suspend bunu evet yapar |
Kurulum ayrıca bir oturum açma başlığı ekler. Kurulumun değiştirdiği her şey /opt/ironflock/device-init/installed.json dosyasına yazılır. 4. adımdan itibaren bir adım başarısız olursa hata, denemenin kaydedildiğini ve aynı komutun yeniden çalıştırıldığında önce onu geri alacağını söyler. Komut böyle önceki bir deneme bulduğunda, denetimler geçtikten sonra onu geri alır: neyi geri alacağını listeler, sorar ve ardından yeniden kurar.
Proxy
Proxy bayrakları kurulumun indirmeleri, Docker ve ajan için kurumsal proxy’yi ayarlar. Her ayar kendi bayrağından, yoksa HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenlerinden (veya küçük harfli biçimlerinden) gelir.
Bir proxy URL’si http://proxy.example.com:3128 biçimindedir; https:// ve socks5:// de çalışır, şeması olmayan bir URL ise http:// sayılır. Proxy oturum açma gerektirdiğinde URL kullanıcıyı parola olmadan belirtir (http://[email protected]:3128), parolayı ise --proxy-password-file verir. Komut parolayı, kullanıcı belirten bayrakların URL’lerine yerleştirir.
Uyarı: Proxy parolasını asla URL’ye yazmayın. Komut satırları
psçıktısında ve kabuk geçmişinde görünür; bu nedenle parola içeren bir URL hatalı komut satırı olarak reddedilir ve hata mesajı onu tekrarlamaz. Parolayı bir dosyanın tek satırına yazın ya da--proxy-password-file /dev/stdinile pipe üzerinden verin (Gizli Bilgiler).
--no-proxy ile verilen ana bilgisayarların yanı sıra şunlar da proxy’yi atlar (NO_PROXY): localhost, 127.0.0.1 ve ::1 ile, IronFlock bulutunun ana bilgisayarları olmadıklarında (LAN’daki bir Appliance veya yansı gibi) indirme sunucusu ve .flock dosyasındaki güncelleme sunucusu (update_url). IronFlock bulutunun ana bilgisayarları (ironflock.com, ironflock.dev ve bunların altındaki ana bilgisayarlar ile storage.googleapis.com) internettedir ve proxy üzerinden gider.
Kurulum, Docker’ın ve ajanın proxy’sini yalnızca root’un okuyabildiği /etc/ironflock/proxy.env dosyasına (mod 0600) yazar ve Docker bunu kullanmak için yeniden başlar. docker.service ve ironflock-device-agent.service için ironflock-proxy.conf systemd drop-in dosyaları bu dosyanın adını verir ve kendileri hiçbir ayar içermez; böylece systemctl show her kullanıcıya dosyanın adını söyler, içeriğinden ise hiçbir şey söylemez. Makinenin kendi Docker drop-in dosyası (docker.service.d/http-proxy.conf) kalır; IronFlock’un ayarları onun Environment= satırlarından önceliklidir ve bir uyarı bu dosyayı belirtir. proxies içeren bir daemon.json dosyası bunları korur, çünkü Docker bunları diğer tüm ayarlardan önce alır.
Ayarları daha sonra değiştirmek için agent configure komutunu kullanın. Tüm sahanın proxy’si için bkz. Kurumsal Proxy Arkasında.
Örnekler
# Ajanı kurun; komut her adımdan önce sorar
sudo ironflock agent install -c device.flock
# Soru sormadan kurun ve cihazın uyku moduna geçmesini engelleyin
sudo ironflock agent install -c device.flock --yes --disable-suspend
# Oturum açma gerektirmeyen bir proxy arkasında kurun
sudo ironflock agent install -c device.flock --https-proxy http://proxy.example.com:3128
# Oturum açma gerektiren bir proxy arkasında kurun; parola bir dosyadan gelir
sudo ironflock agent install -c device.flock --https-proxy http://[email protected]:3128 --proxy-password-file proxy-password.txtSonuç
$ sudo ironflock agent install -c device.flock --yes
Done: the IronFlock device agent runs (systemctl status ironflock-device-agent).
The device appears online in IronFlock within a minute.{"action":"installed","device":"demo-device","agent_version":"1.6.9"}warnings sonuçta yalnızca bir dosya Appliance’ın yansısı yerine IronFlock bulutundan geldiğinde bulunur: Warning: satırlarında olduğu gibi her dosya için bir girdi.
Reddettiği Durumlar
Hatalı bir komut satırı, herhangi bir şey çalışmadan çıkış kodu 2 ile sona erer: parola içeren bir proxy URL’si; kullanıcı belirten ama --proxy-password-file olmadan verilen bir proxy URL’si; kullanıcı belirten bir proxy URL’si olmadan verilen --proxy-password-file; proxy URL’si olmayan bir değer. Ortamdaki, proxy URL’si olmayan bir proxy değişkeni de buna dahildir; hata değişkenin değerini değil adını belirtir.
Komut şu durumlarda çıkış kodu 3 ile reddeder ve hiçbir şeyi değiştirmez:
- root olarak çalışmıyorsa ya da makine Linux değilse;
- makine IronFlockOS çalıştırıyorsa; bu, root olsun ya da olmasın her şeyden önce denetlenir. Görüntü, ajanı ve
ironflockaracını sistemiyle birlikte getirir ve her işletim sistemi güncellemesi sistemi bütünüyle değiştirir. Mesaj, cihazın bir sonraki açılışında IRONFLOCKOS bölümündeki bir.flockdosyasıyla kaydolduğunu veagent configure -ckomutunun onu hemen kaydettiğini söyler. IronFlockOS yükleyici belleğinde, belleğin bir cihaz olmadığını söyler; - zaten bir ajan kuruluysa, eski
/opt/reagentdüzeninde de olsa. Mesajagent configureveagent removekomutlarını belirtir; - ajan makineyi eski düzenden taşıyorsa;
- önceki bir kurulum ajan kurulmadan önce durmuş, Docker’ın data-root’unu taşımışsa ve Docker o zamandan beri görüntü veya konteyner tutuyorsa: o denemeyi geri almak bunları silerdi;
system,systemd,disk_spaceveyadownload_treedenetimlerinden biri başarısız olursa.--yesbunu değiştirmez.
Hayır ile yanıtlanan bir soru ya da terminal ve --yes olmadan gelen bir soru komutu çıkış kodu 4 ile sonlandırır. Başarısız olan bir adım onu çıkış kodu 1 ile sonlandırır.
ironflock agent configure
Kurulumun ayarladıklarını değiştirir: cihazın .flock dosyasını, Docker’ın ve ajanın kurumsal proxy’sini ya da ikisini birden. Değişikliği kullanması gerekenleri yeniden başlatır.
ironflock agent configure [-c <device.flock>] [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux; IronFlockOS’ta yalnızca -c ile. Root: gerekir. Sorular: Docker yeni proxy ayarları için yeniden başlamadan önce; --yes yanıtlar.
| Bayrak | Anlamı |
|---|---|
-c, --config <file> | cihazın yeni .flock dosyası |
--http-proxy <url> | ayarlı olanın yerine Docker’ın ve ajanın HTTP proxy’si |
--https-proxy <url> | ayarlı olanın yerine Docker’ın ve ajanın HTTPS proxy’si |
--no-proxy <hosts> | ayarlı olanların yerine proxy’yi atlayan, virgülle ayrılmış ana bilgisayarlar; localhost her zaman eklenir |
--proxy-password-file <file> | tek satırı proxy URL’lerindeki kullanıcının parolası olan bir dosya veya pipe (/dev/stdin) |
--remove-proxy | proxy ayarlarını kaldırır: Docker ve ajan doğrudan bağlanır |
-c, bir proxy bayrağı ya da ikisini birden verin. İkisi de yoksa değiştirilecek bir şey yoktur: bu hatalı bir komut satırıdır (çıkış kodu 2).
Başka Bir .flock Dosyası
-c ile ajan verilen .flock dosyasını alır ve yeniden başlar: makine o .flock dosyasının cihazı olur. Uygulamalar ve verileri kalır. Kurulum bir SSH kullanıcısı ayarladıysa SSH kullanıcısı .flock dosyasını izler:
- Aynı proje sahibi, başka bir cihaz anahtarı — eski anahtar artık kabul edilmez, yenisi kabul edilir.
- Başka bir proje sahibi — yeni sahip kendi SSH kullanıcısını alır; ilk sahibin SSH kullanıcısı ise
agent removekomutunun kaldırdığı gibi gider: sudo kuralı, anahtar ve kurulum oluşturduysa ana dizini ile birlikte hesap. - Cihaz anahtarı olmayan bir
.flockdosyası — SSH kullanıcısı gider ve yerine yenisi gelmez.
Cihaz el değiştirdiğinde komutu çalıştıran kişi, tam da giden hesapla SSH üzerinden bağlanmış ilk sahip olabilir ve bir hesabı kaldırmak onun oturumlarını sona erdirir. Bu nedenle komut şu sırayla çalışır: yeni sahibin hesabını (kullanıcı, anahtar, sudo kuralı) ayarlar, ajanı yeni .flock dosyasıyla yeniden başlatır ve ancak ondan sonra ilk sahibin sudo kuralını, oturumlarını ve hesabını (aynı sahip için yalnızca eski anahtarı) kaldırır. Eski giriş yolu gitmeden önce cihazın yeni bir giriş yolu vardır ve cihaz çevrimiçidir. Oturumlar sona ermeden önce stderr’deki bir satır bunu söyler, örneğin Removing the account anna, ...: a session of anna ends here.
- Ajan yeni
.flockdosyasıyla yeniden başlamazsa ilk sahip erişimini korur: birinin cihaza girebilmesi gerekir. - Yalnızca yeni sahibin SSH kullanıcısı başarısız olduysa ilk sahibin erişimi yine de gider: cihaz el değiştirmiştir ve çevrimiçidir.
- Kimin erişiminin henüz kaldırılacağı
/opt/ironflock/device-init/installed.jsondosyasına (users_to_remove) kaydedilir. Sonraki heragent configure -cveagent removebunu yeniden dener. - Yeni
.flockdosyasının yeniden ayarladığı bir hesap asla kaldırılmaz (sahip A, sonra B, sonra yine A). - İlk değişikliğinden itibaren kaybolan bir terminal veya SSH oturumu komutu durdurmaz.
--host üzerinden, makinedeki .flock kopyası komut onu okur okumaz kaldırılır. --host bayrağının SSH kullanıcısı giden bir hesapsa SSH oturumu hesapla birlikte sona erer: bu durumda çalıştırmanız, kopan bir bağlantıdan sonra olduğu gibi çıkış kodu 255 ile sona erer, makinedeki komut ise sonuna kadar devam eder. Çalıştırmanın ironflock.XXXXXXXXXX klasörü ikili dosyasıyla birlikte makinede kalır; geçici bir klasördeyse o klasör temizlenene kadar kalır, hesabın ana dizinindeyse hesapla birlikte gider.
IronFlockOS’ta
-c ile komut cihazı, IronFlockOS’un her yeni kök yuvasının ilk açılışında kaydettiği gibi kaydeder; bu, kaydolmuş bir cihazda da henüz kaydolmamış bir cihazda da geçerlidir. Verilen .flock dosyası ajanın kopyası olur (/data üzerinde /opt/ironflock/device-agent/device-config.flock) ve cihaz bu dosyadan şu sırayla ayarlanır: proje sahibinin SSH kullanıcısı, WiFi, cihaz adından ana bilgisayar adı (/etc/ironflockos/enroll.conf dosyası hostname-from-flock=no demiyorsa), yeni .flock dosyasıyla yeniden başlatılan ajan ve ardından önceki sahibin erişiminin kaldırılması.
Bir sonraki işletim sistemi güncellemesi yeni kök yuvasını aynı kopyadan kaydeder. Verdiğiniz dosya olduğu yerde kalır. Başarısız olan bir adım ajanın yeni .flock dosyasıyla yeniden başlamasını engellemez, ancak ilk sahibin erişimi ancak ajan yeniden başladıktan sonra gider. Bu durumda komut çıkış kodu 1 ile sona erer ve başarısız olan her adımı belirtir; bunları yinelemek için aynı komutu yeniden çalıştırın.
Proxy bayrakları IronFlockOS’ta reddedilir. IronFlockOS, Docker’ın, ajanın ve sistem saatinin proxy’sini /data üzerindeki /etc/ironflockos/proxy.conf dosyasında tutar; IRONFLOCKOS bölümündeki bir proxy.conf dosyası bir sonraki açılışta onun yerini alır.
Proxy Ayarları
- Verilen her proxy bayrağı kendi ayarını değiştirir, diğerleri kalır. Tek başına
--https-proxyHTTPS proxy’sini değiştirir; HTTP proxy’sini ve proxy’yi atlayan ana bilgisayarları korur. --proxy-password-fileile verilen parola, verilen URL’lerden kullanıcı belirtenlere girer. URL verilmezse cihazın ayarlarındaki kullanıcı belirten URL’lere girer; böylece yeni bir parola yalnızca dosyayla ayarlanır.--no-proxyve daha önce proxy’si olmayan bir cihazın ilk proxy’si ayrıcalocalhost,127.0.0.1,::1ile, IronFlock bulutunun bir ana bilgisayarı değilse (bir Appliance’ınki gibi) ajanın.flockdosyasındaki güncelleme sunucusunu da alır.--remove-proxyayarları kaldırır. Başka hiçbir proxy bayrağıyla birlikte verilemez.- Ortamınızdaki proxy değişkenleri burada hiçbir şeyi değiştirmez: yalnızca bayraklar geçerlidir.
Proxy’yi atlayan ana bilgisayarların listesi, --no-proxy başka bir liste vermedikçe komutun bulduğu gibi kalır. Bu liste IronFlock bulutunun bir ana bilgisayarını içerdiğinde bir uyarı onu belirtir ve listeyi onsuz veren agent configure --no-proxy komutunu gösterir. İnternete yalnızca proxy üzerinden erişen bir cihaz, bulutun indirme sunucusu instance-registry.ironflock.com bu listede olduğu sürece ajanını güncelleyemez.
Ayarlar, yalnızca root’un okuyabildiği /etc/ironflock/proxy.env dosyasında tutulur ve docker.service ile ironflock-device-agent.service için ironflock-proxy.conf drop-in dosyaları bu dosyanın adını verir. Ayarlar değiştiğinde komut onları parola olmadan, önceki ve sonraki hâlleriyle gösterir. Ardından Docker ve ajan yeniden başlar. Docker’ı yeniden başlatmak cihazın uygulamalarını kısa bir süre durdurur; bu yüzden komut bunu söyler ve sorar; --yes yanıtlar. Parola stdin üzerinden geldiğinde sorunun sorulacağı bir terminal yoktur: --yes verin.
- Docker’ın
daemon.jsondosyasıproxiesayarlıyorsa (Docker bunları bu ayarlardan önce alır) ve hiçbir şey değişmiyorsa Docker yeniden başlamaz ve hiçbir şey sorulmaz. - Yalnızca drop-in dosyası eksik olan bir birim onu alır ve yalnızca o birim yeniden başlar.
- Makinenin kendi Docker drop-in dosyası olduğu gibi kalır. Ajanın veya Docker’ın bir proxy değişkeni ayarlayan başka bir drop-in dosyası bir uyarıda belirtilir; IronFlock’un ayarları, ayarladıkları her değişken için onu geçersiz kılar. Her kullanıcının okuyabildiği bir proxy parolası içeren bir drop-in dosyası veya
daemon.jsonda bir uyarıda belirtilir. - Docker’ın yeniden başlatılması başarısız olursa ajan yine de yeniden başlar; tersi de geçerlidir. Hata (çıkış kodu 1), hâlâ eski ayarlarla çalışan birimleri ve ayarları uygulayan
systemctl restartkomutunu belirtir; ikinci bir çalıştırma ayarları yerinde bulur ve hiçbir şeyi yeniden başlatmaz. - Ayarlar yazılamadığında hiçbir şey yeniden başlamaz ve hata, komutu yeniden çalıştırmanızı söyler.
Daha eski bir kurulumun http-proxy.conf drop-in dosyalarının Environment= satırlarına yazdığı proxy ayarlarını her kullanıcı, parolası dahil systemctl show ile okuyabilir; bu ayarlar, yalnızca -c ile yapılanlar da dahil olmak üzere her agent configure çalıştırmasıyla /etc/ironflock/proxy.env dosyasına taşınır. Eski dosyaların kopyası tutulmaz. Kural olarak taşıma değerleri korur; bu yüzden hiçbir şeyi yeniden başlatmaz ve hiçbir şey sormaz. Bir birimin kullandığı proxy’yi değiştirdiği yerde komut nedenini söyler, o birimin proxy’sini önceki ve sonraki hâliyle gösterir ve sorar. Ayarlar dosyasının tutamayacağı bir değer (ana bilgisayarda veya atlama listesinde tek tırnak, bir kontrol karakteri) taşınmaz: proxy bayrağı olmayan bir çalıştırma onu bırakır, uyarır ve değeri yeniden veren bayrağı belirtir.
Örnekler
# Bu makineyi başka bir .flock dosyasının cihazı yapın
sudo ironflock agent configure -c new-device.flock
# Oturum açma gerektiren bir HTTPS proxy'si ayarlayın; parola bir dosyadan gelir
sudo ironflock agent configure --https-proxy http://[email protected]:3128 --proxy-password-file proxy-password.txt
# Yalnızca yeni bir proxy parolası ayarlayın; parola stdin'den okunur, soru sorulmaz
sudo ironflock agent configure --proxy-password-file /dev/stdin --yes < proxy-password.txt
# Proxy ayarlarını kaldırın: Docker ve ajan doğrudan bağlanır
sudo ironflock agent configure --remove-proxySonuç
$ sudo ironflock agent configure -c new-device.flock
Device configuration updated; the agent restarted.
$ sudo ironflock agent configure --https-proxy http://[email protected]:3128 --proxy-password-file proxy-password.txt
The proxy settings of Docker and the agent change:
HTTP proxy: none (unchanged)
HTTPS proxy: none -> http://[email protected]:3128 (with a password)
No proxy for: localhost,127.0.0.1,::1
Docker restarts for the new settings: the apps of the device stop for a moment and start again.
? Continue? Yes
Proxy settings updated: HTTPS through http://[email protected]:3128 (with a password); not for localhost,127.0.0.1,::1.
Restarted: docker.service, ironflock-device-agent.service.IronFlockOS’ta -c kaydı bildirir:
Device configuration updated: this device enrolled as new-device, as IronFlockOS enrolls it at every new root slot; the agent restarted.{"action":"configured","device":"new-device","restarted":["ironflock-device-agent.service"]}{"action":"configured","proxy":{"password":false,"changed":true,"moved":false},"restarted":["docker.service","ironflock-device-agent.service"]}| Alan | Anlamı |
|---|---|
action | komut bir şeyi değiştirdiğinde configured; hiçbir şey değişmediğinde bulunmaz |
device | -c ile verilen .flock dosyasının cihazı; -c olmadan bulunmaz |
proxy | bir proxy bayrağıyla ya da eski biçimdeki ayarlar taşındığında bulunur. Şu anki hâlleriyle http_proxy, https_proxy (parola olmadan) ve no_proxy; proxy yoksa bulunmazlar. password: bir URL’de parola var; changed: ayarlar öncekilerden farklı ya da Docker veya ajan bunları bundan sonra alıyor veya başka bir proxy kullanıyor; moved: ayarlar eski biçimdeydi |
restarted | komutun yeniden başlattığı birimler |
Reddettiği Durumlar
Hatalı bir komut satırı çıkış kodu 2 ile sona erer: değiştirilecek bir şey yok; başka bir proxy bayrağıyla birlikte --remove-proxy; parola içeren bir proxy URL’si; kullanıcı belirten ama --proxy-password-file olmadan verilen bir proxy URL’si; hiçbiri kullanıcı belirtmeyen URL’lerle birlikte --proxy-password-file; proxy URL’si veya ana bilgisayar listesi olmayan bir değer.
Komut şu durumlarda çıkış kodu 3 ile reddeder ve hiçbir şeyi değiştirmez:
- kurulu ajan yoksa (mesaj
agent installkomutunu belirtir); IronFlockOS bunun istisnasıdır, orada-chenüz kaydolmamış bir cihazı kaydeder; - ajan makineyi eski düzenden taşıyorsa;
- proxy bayrakları verilmişse ve ajan hâlâ eski
/opt/reagentdüzeninde çalışıyorsa. Ajan makineyi taşıdıktan sonra (ironflock statusdüzeni gösterir) aynı komut çalışır; - IronFlockOS’ta,
-cile veya olmadan, proxy bayrakları verilmişse; - proxy’si olmayan bir cihazda
--no-proxyveya--proxy-password-filetek başına verilmişse ya da cihazın hiçbir proxy URL’si kullanıcı belirtmezken parola dosyası tek başına verilmişse; - proxy bayrakları,
/etc/ironflock/proxy.envdosyasının tutamayacağı eski biçimde bir değeri koruyorsa; mesaj, değeri yeniden veren bayrağı belirtir.
IronFlockOS’ta kayıt .flock dosyasını korumayacaksa -c çıkış kodu 3 ile reddedilir:
- bir fabrika ayarlarına sıfırlama istenmiş ve henüz başlamamışsa (
os resetkomutunun yazdığı/boot/efi/factory-reset.conf) ya da başlamışsa (/boot/efi/factory-reset.keep): bir sonraki açılış, komutun ayarladıklarını silerdi; - bir fabrika ayarlarına sıfırlama açıksa veya vazgeçmişse ve onunla gelen dosyaları tutuyorsa (
/run/ironflockos/factory-reset-hold;ironflock statusdaha fazlasını söyler); /databağlanamadıysa; bu durumda ajanın kopyası kök yuvasına düşerdi. O zaman doğru yol IRONFLOCKOS bölümündeki bir.flockdosyasıdır;- IRONFLOCKOS bölümünde bir
.flockdosyası duruyorsa; cihaz bir sonraki açılışında onunla kaydolur ve mesaj onu belirtir; - komut, bir cihaz olmayan IronFlockOS yükleyici belleğinde çalışıyorsa;
- sistemde
/usr/lib/ironflock/image.jsonyoksa ya da eski düzende bir ajan varsa.
ironflock agent update
Ajanın kendini kanalındaki sürüme güncellemesini sağlar ve ne yaptığını izler. Ajan her başlatılışında daha yeni bir sürüm arar: komut onu yeniden başlatır ve sonucu bildirir. Cihaz IronFlock’ta kısa bir süre çevrimdışı olur; uygulamaları çalışmaya devam eder.
ironflock agent update [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: bir soru, yeniden başlatmanın ne yapacağını söyledikten sonra; --yes yanıtlar.
Komutun kendine ait bayrağı yoktur ve sürüm almaz. Ajan kanalını (production ya da IronFlock’un test platformunda test) güncelleme sunucusundan izler: bu, .flock dosyasındaki update_url (bir Appliance’ın yansısı), yoksa IronFlock bulutudur. --download-base bunu değiştirmez.
Ajanın yaptıkları, bu sırayla:
- Kanalının sürümünü okur. Bu cihazda iki kez başarısız olan bir sürüm, daha yenisi çıkana kadar yeniden indirilmez.
- Daha yeni bir sürümü klasörüne indirir ve imzasını denetler.
- Yeni sürümü yerine koyar ve indirmeden 10 saniye sonra onunla yeniden başlar. IronFlock’a son bağlantısı 12 dakika ile bir gün önce arasındaysa güncellemeyi bekletir: bir güncelleme, bağlandığı bilinen bir sürümden etkinleştirilir.
- Yeni sürüm deneme süresindedir: başlangıcından itibaren 10 dakika içinde IronFlock’a bağlanması ve 2 dakika ayakta kalması gerekir. Bağlanmazsa ya da ondan önce üç kez durursa ajan önceki sürüme döner.
- Geri almadan sonra önceki sürümün bağlanması gerekir. Bağlanırsa hata yeni sürümdedir: bir sonraki güncellemede bir kez daha denenir ve ikinci başarısızlığından sonra daha yeni bir sürüme kadar engellenir. Önceki sürüm de 10 dakika içinde bağlanamazsa ajan ağı sorumlu tutar ve yeni sürüm bir sonraki güncellemede yeniden denenir.
Komut bunu ajanın klasöründeki update-state.json dosyasında ve ajanın günlüğünde izler; ikisinden de yeniden başlatmadan önceki kayıtları okumaz. İlerlemesi stderr’e metin satırları olarak gider, --json ile de. Bir indirme, o ana kadar ne kadarını aldığını dakikada bir gösterir.
outcome | Anlamı | Çıkış kodu |
|---|---|---|
updated | yeni sürüm deneme süresini geçti | 0 |
current | ajan zaten kanalının sürümünü çalıştırıyor | 0 |
rolled_back | yeni sürüm başarısız oldu ve ajan yeniden önceki sürümü çalıştırıyor | 1 |
blocked | kanalın sürümü bu cihazda daha önce başarısız oldu; ajan onu denemedi | 1 |
not_updated | denetim, indirme veya etkinleştirme başarısız oldu ya da ajan güncellemeyi bekletti | 1 |
Çıkış kodu 1 ile sonuç yine de yazılır ve stderr Error: satırını alır. --json ile ardından hata nesnesi gelmez: stdout’ta sonuç bulunur.
Örnekler
# Ajanı güncelleyin; komut yeniden başlatmadan önce sorar
sudo ironflock agent update
# Soru sormadan güncelleyin ve sonucu JSON olarak okuyun
sudo ironflock agent update --yes --jsonSonuç
$ sudo ironflock agent update --yes
The agent 1.6.9 restarts now and looks for a newer release on its channel: the device is offline in IronFlock for a moment, its apps keep running.
A newer release is downloaded and started. It has to connect to IronFlock within 10 minutes and stay up for 2, or the agent goes back to 1.6.9.
The agent restarted; it looks for a newer release.
Its channel offers 1.7.0: the agent downloads it.
Activating 1.7.0: the agent restarts into it.
1.7.0 runs on probation: it has to connect to IronFlock within 10 minutes and stay up for 2.
The agent was updated from 1.6.9 to 1.7.0: 1.7.0 connected to IronFlock and passed its probation.Güncel bir ajan ve yeni sürümü geri alınmış bir ajan:
{"outcome":"current","version":"1.7.0","channel_version":"1.7.0"}{"outcome":"rolled_back","version":"1.6.9","channel_version":"1.7.0","failed_version":"1.7.0","reason":"did not connect within 10m0s","retry":"next_update"}| Alan | Değerler |
|---|---|
action | ajan artık daha yeni bir sürüm çalıştırıyorsa updated; aksi hâlde bulunmaz |
outcome | yukarıdaki tablodaki gibi |
version | şu anda çalışan sürüm |
previous_version | updated ile: önceki sürüm |
channel_version | ajanın okuduğu şekliyle kanalın sürümü; ajan bunu söylemediyse bulunmaz |
failed_version | rolled_back ve blocked ile: başarısız olan sürüm |
reason | ajanın kendi ifadesiyle, neden başarısız olduğu veya neden güncellenmediği |
retry | rolled_back ve blocked ile: ajanın başarısız sürümü ne zaman yeniden deneyeceği: next_update, newer_release veya after_judgement (önceki sürümün henüz bağlanması gerekiyor) |
Reddettiği Durumlar
Komut şu durumlarda çıkış kodu 3 ile reddeder: kurulu ajan yoksa (mesaj agent install komutunu belirtir), ajan makineyi eski düzenden taşırken, ajan eski düzende çalışıyorsa (güncellemeleri komutun izleyebileceği bir durum tutmaz) ve ajan, birimi altında kendini güncelleyen ilk sürüm olan 1.3.0’dan eskiyse.
Yeniden başlatma başarısız olduğunda ve güncelleme ajanın süreleri içinde ilerlemediğinde, nereye bakılacağını söyleyen bir hatayla çıkış kodu 1 ile başarısız olur. Bu süreler şunlardır: yeniden başlatmadan sonra 3 dakika içinde ajanın denetimi, 30 dakika içinde indirme, 3 dakika içinde etkinleştirme, deneme süresindeki yeni sürümün her başlangıcı için 12 dakika, bir geri almadan sonra ajanın kararı için 12 dakika ve hepsi için toplam 84 dakika. Ajan kendi başına devam eder; nerede olduğunu ironflock status gösterir.
Ctrl-C güncellemeyi değil izlemeyi durdurur ve komutu çıkış kodu 130 ile sonlandırır.
ironflock agent remove
Cihaz ajanını kaldırır ve kurulumunun kaydettiklerini geri alır. Docker’ın kendisi ve paketler kurulu kalır.
ironflock agent remove [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux; IronFlockOS’ta çalışmaz. Root: gerekir. Sorular: bir soru, kaldıracaklarını listeledikten sonra. Soruda “No” önceden seçilidir: yalnızca Enter’a basmak hiçbir şeyi kaldırmaz.
Komutun kendine ait bayrağı yoktur. Şunları kaldırır:
- Ajan — ajan, veritabanı ve
/opt/ironflock/device-agent. Docker cihazın uygulamalarını ve verilerini ajanın klasöründe tutuyorsa bunlar da ajanla birlikte gider. - SSH kullanıcısı — hesap, yalnızca kurulum onu oluşturduysa. Daha önce var olan bir hesabın
authorized_keysdosyasından yalnızca cihaz anahtarı gider; dosya kullanıcıda kalır.agent configure -cile kaldırılması başarısız olmuş önceki bir proje sahibinin erişimi de gider ve “(a removal that had failed)” notuyla listelenir. - Makine varsayılanları — WiFi profili, oturum açma başlığı ve maskelenmiş uyku hedefleri.
- Kurulumun yazdığı veya değiştirdiği dosyalar — asılları modları, sahipleri ve gruplarıyla geri gelir.
- Proxy ayarları —
/etc/ironflock/proxy.envile bu dosyanın adını veren drop-in dosyaları ve daha eski bir kurulumunhttp-proxy.confdrop-in dosyalarında bıraktığı proxy ayarları. Yerlerine hiçbir şey geri gelmez: sonrasında Docker’ın IronFlock’tan gelen bir proxy’si olmaz ve komut proxy parolasını hiçbir yere yazmamış olur. Docker’ın IronFlock’tan gelen bir proxy’si varsa sorudan önceki liste bunu söyler. - Ajanın makineye kendisinin yazdığı ayarlar — biriminin
10-ironflock-resources.confdrop-in dosyasıyla birlikteironflock.slicebirimi, systemd watchdog ayarı (/etc/systemd/system.conf.d/10-ironflock-watchdog.conf), çekirdeğin çökme ayarları (/etc/sysctl.d/60-ironflock-crash-recovery.conf; çekirdek bunları bir sonraki açılışa kadar korur) ve journal sınırı (/etc/systemd/journald.conf.d/10-ironflock.conf). - Ajanın kayıt defteri oturumları — ajan durduktan sonra komut,
.flockdosyasının belirttiği kayıt defteri (docker_registry_url) için ve bir Appliance’ın cihazındaregistry.<appliance_domain>içindocker logoutçalıştırır./root/.docker/config.jsondosyasındaki başka hiçbir oturuma dokunulmaz. Eksik veya başarısız olan bir Docker kaldırmayı durdurmaz; bir satır hangi oturumun kaldırılmadığını söyler.
Makinenin kendi Docker drop-in dosyası olduğu gibi kalır. Kaldırma için yeniden başlamayan bir Docker (verileri ajanın klasöründe değildi), bir sonraki yeniden başlatmasına kadar başladığı proxy’yi kullanır.
Komut neyi kaldıracağını stderr’de listeler, ardından sorar. --json ile liste sonucun removed alanıdır. Komut kaldırmaya başladıktan sonra kaybolan bir terminal veya SSH oturumu onu durdurmaz: giden SSH kullanıcısı oturumlarını, belki de komutu çalıştıran oturumu, beraberinde götürür ve kaldırma sonuna kadar devam eder.
Örnekler
# Ajanı kaldırın; komut nelerin gideceğini listeler ve sorar
sudo ironflock agent remove
# Ajanı soru sormadan kaldırın
sudo ironflock agent remove --yesSonuç
$ sudo ironflock agent remove --yes
This removes:
- the agent, its database and /opt/ironflock/device-agent (with Docker's images and containers)
- the user operator and its home directory
- /etc/profile.d/ironflock-motd.sh
The IronFlock device agent was removed from this machine.{"action":"removed","removed":["the agent, its database and /opt/ironflock/device-agent (with Docker's images and containers)","the user operator and its home directory","/etc/profile.d/ironflock-motd.sh"]}Reddettiği Durumlar
Komut, kurulu ajan yoksa ve ajan makineyi eski düzenden taşırken çıkış kodu 3 ile reddeder. IronFlockOS’ta, root olsun ya da olmasın, her şeyden önce reddeder: görüntü ajanı sistemiyle birlikte getirir; her işletim sistemi güncellemesi ve bir sonraki kayıt onu yeniden kurardı. Mesaj, cihazı IronFlock’taki kimliği olmadan yeni yazılmış bir IronFlockOS’a döndüren ironflock os reset komutunu belirtir. IronFlockOS yükleyici belleğinde, belleğin bir cihaz olmadığını söyler.
Hayır yanıtı ya da terminal ve --yes olmadan gelen bir soru komutu çıkış kodu 4 ile sonlandırır.
ironflock agent restart
Ajanın hizmetini yeniden başlatır ve ajanın tekrar çalıştığını denetler: biriminin tek bir süreçle beş saniye çalışması gerekir. Cihaz bu saniyeler boyunca IronFlock’ta çevrimdışıdır; uygulamalar çalışmaya devam eder.
ironflock agent restart [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: yok.
Komutun kendine ait bayrağı yoktur. Hizmet ironflock-device-agent.service birimidir. Ajan üzerinden gelen bir terminalde (IronFlock Studio’daki cihaz terminali ya da IronFlock üzerinden SSH) çalıştırıldığında yeniden başlatma o oturumu sona erdirir; cihaz bir dakika içinde geri gelir.
# Ajanı yeniden başlatın
sudo ironflock agent restart
# Yeniden başlatın ve yeni süreci JSON olarak okuyun
sudo ironflock agent restart --json$ sudo ironflock agent restart
The agent restarted: ironflock-device-agent.service runs, with process 4242.{"action":"restarted","unit":"ironflock-device-agent.service","state":"running","main_pid":4242}state, birimin sonraki durumudur ve ironflock status içindeki gibi adlandırılır. main_pid ajanın sürecidir; her yeniden başlatmadan sonra yeni bir süreçtir.
Reddeder (çıkış kodu 3): kurulu ajan yoksa (mesaj agent install -c <file> komutunu belirtir), ajan makineyi eski düzenden taşırken ve systemd ajanın birimini tanımıyorsa (mesaj agent remove komutunu belirtir).
Başarısız olur (çıkış kodu 1): ajan ayağa kalkmazsa, yani systemd birimi başlatamazsa ya da birimin süreci beş saniye içinde sona ererse. Hata birimi ve son günlük satırlarının nerede olduğunu belirtir: ajanın günlüğü (agent logs) ve journal (journalctl -u <unit>).
ironflock agent stop
Ajanın hizmetini durdurur. Cihaz IronFlock’ta çevrimdışı olur ve IronFlock üzerinden uzaktan erişim de ajanla birlikte gider: bu yoldan gelen bir oturum (IronFlock Studio’daki cihaz terminali, IronFlock üzerinden SSH) sona erer ve ajan tekrar çalışana kadar IronFlock cihaza erişemez. Uygulamalar çalışmaya devam eder, çünkü onları ajan değil Docker çalıştırır.
ironflock agent stop [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: bir soru, ajanı durdurmanın neyi sona erdireceğini söyledikten sonra; --yes yanıtlar.
Komutun kendine ait bayrağı yoktur. Ajanı agent start tekrar başlatır; bir sonraki açılış da başlatır. Durdurulmuş bir ajan IronFlock üzerinden tekrar başlatılamaz. Çalışmayan bir ajanda durdurulacak bir şey yoktur; bu durumda komut hiçbir şey sormaz ve sonuçta action bulunmaz.
# Ajanı durdurun; komut bunun neyi sona erdireceğini söyler ve sorar
sudo ironflock agent stop
# Soru sormadan durdurun
sudo ironflock agent stop --yes$ sudo ironflock agent stop --yes
Stopping the agent (ironflock-device-agent.service) takes this device offline in IronFlock.
The remote access through IronFlock goes with it: a session that came that way (the device's terminal in Studio, SSH through IronFlock) ends.
The apps keep running. 'sudo ironflock agent start' starts the agent again, and so does the next boot.
The agent is stopped (ironflock-device-agent.service): the device is offline in IronFlock, and its apps keep running. 'sudo ironflock agent start' starts the agent again.{"action":"stopped","unit":"ironflock-device-agent.service","state":"stopped"}Reddeder (çıkış kodu 3): agent restart ile aynı durumlarda. Hayır yanıtı ya da terminal ve --yes olmadan gelen bir soru komutu çıkış kodu 4 ile sonlandırır.
ironflock agent start
Çalışmıyorsa ajanın hizmetini başlatır ve agent restart gibi ajanın ayağa kalktığını denetler: biriminin tek bir süreçle beş saniye çalışması gerekir. Zaten çalışan bir ajana dokunulmaz ve bu durumda sonuçta action bulunmaz.
ironflock agent start [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: yok. Komutun kendine ait bayrağı yoktur.
# Ajanı başlatın
sudo ironflock agent start
# Başlatın ve sürecini JSON olarak okuyun
sudo ironflock agent start --json$ sudo ironflock agent start
The agent started: ironflock-device-agent.service runs, with process 4242. The device appears online in IronFlock within a minute.--json ile, zaten çalışan bir ajan için:
{"unit":"ironflock-device-agent.service","state":"running","main_pid":4242}Reddeder ve başarısız olur, agent restart gibi: kurulu ajan yoksa, ajan makineyi eski düzenden taşırken ve systemd ajanın birimini tanımıyorsa çıkış kodu 3; ajan ayağa kalkmazsa çıkış kodu 1.
ironflock agent logs
Ajanın günlüğünü, yani /var/log/ironflock/device-agent.log dosyasını ve ajanın bu günlüğü döndürerek oluşturduğu dosyaları gösterir. Hiçbir şeyi değiştirmez.
ironflock agent logs [flags]Çalıştığı sistemler: kurulu bir ajanı olan Linux; dosyaları okur ve systemd gerektirmez. Root: gerekir, çünkü ajan günlüğünü yalnızca root için yazar (mod 0600). Sorular: yok.
| Bayrak | Anlamı |
|---|---|
--lines <n> | son n satır ya da all. Varsayılan: 100; --since ile o zamandan beri her satır |
--since <time> | belirli bir zamandan itibaren satırlar: şimdiden geriye bir süre (90s, 10m, 2h, 1h30m veya tam günler: 3d) ya da bir zaman: 2026-11-10T09:00:00Z veya saat farkıyla, 2026-11-10 09:00, 2026-11-10 09:00:05, 2026-11-10 (o günün gece yarısı), 09:00 (bugün). Saat dilimi olmayan bir zaman makinenin saat dilimindedir |
--follow | satırlardan sonra, Ctrl-C’ye kadar ajanın yazdığı yeni satırları gösterir |
Ajan, günlüğü 100 MB’a ulaştığında onu aynı klasörde device-agent-<time>.log olarak yeniden adlandırır ve yeni bir günlük başlatır; bunlardan ikisini tutar. Komut günlüğü ve bu dosyaları okur.
Ajan her satıra bir JSON nesnesi yazar: girdinin zamanı (saniyesine kadar), düzeyi, mesajı ve başka alanlar. Metin biçimi bir girdiyi IronFlock Studio’nun ajanın günlüğünü gösterdiği gibi gösterir: UTC olarak zaman, düzey, mesaj ve hatası. Bir çökmenin yığın izi gibi girdi olmayan bir satır olduğu gibi gösterilir. Kontrol karakterleri kaçış dizileriyle yazılır (\n, \x1b); böylece bir girdi terminalde tek satırdır ve terminali yönlendiremez. --json ile her satır stdout’ta tek bir JSON nesnesidir: ajanın yazdığı şekliyle, tüm alanlarıyla girdi ya da girdi olmayan bir satır için {"message":...}.
--since, o zamandaki veya sonraki ilk girdiyle başlar. Satırlar ajanın yazdığı sırada kalır. Zamanı olmayan bir satır kendinden önceki girdiye aittir.--followile bir satır tamamlandığında gösterilir. Ajan yeni bir dosya başlattığında önce eski dosyanın geri kalanı, ardından yeni dosya başından itibaren gelir. Henüz var olmayan bir günlük beklenir. Ctrl-C komutu çıkış kodu 0 ile sonlandırır;--hostüzerinden Ctrl-C çalıştırmayı çıkış kodu 130 ile sonlandırır.- Ajan henüz hiç günlük yazmadıysa stderr bunu söyler, stdout boş kalır ve çıkış kodu 0 olur.
Örnekler
# Son 100 satır
sudo ironflock agent logs
# Son bir saatin tamamı
sudo ironflock agent logs --since 1h
# Son 20 satır, ardından Ctrl-C'ye kadar her yeni satır
sudo ironflock agent logs --follow --lines 20
# Son on dakika JSON olarak, satır başına bir nesne
sudo ironflock agent logs --since 10m --jsonSonuç
$ sudo ironflock agent logs --lines 3
2026-11-10T11:58:02Z INFO connected to IronFlock
2026-11-10T11:58:03Z INFO 3 apps running
2026-11-10T11:59:40Z ERROR pulling demo-app:1.2 failed: context deadline exceeded{"level":"info","time":"2026-11-10T11:58:02Z","caller":"agent.go:212","message":"connected to IronFlock"}Reddettiği Durumlar
Ne süre ne de zaman olan bir --since, negatif bir süre ve ne sayı ne de all olan bir --lines hatalı komut satırlarıdır (çıkış kodu 2). Komut, root olarak çalışmadığında ve kurulu ajan olmadığında çıkış kodu 3 ile reddeder (mesaj agent install -c <file> komutunu belirtir).